diff --git a/.metadata/.bak_0.log b/.metadata/.bak_0.log new file mode 100644 index 0000000..3d63a5e --- /dev/null +++ b/.metadata/.bak_0.log @@ -0,0 +1,14220 @@ +!SESSION 2015-11-26 21:19:17.303 ----------------------------------------------- +eclipse.buildId=M20130204-1200 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +This is a continuation of log file D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\.metadata\.bak_0.log +Created Time: 2015-11-26 22:01:11.109 + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:01:11.109 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:01:11.361 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:01:12.103 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:01:12.550 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:01:13.031 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:01:13.383 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:01:13.994 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:01:14.611 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:01:17.425 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:01:25.390 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:01:26.258 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:01:26.941 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:01:28.278 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:01:29.505 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-26 22:01:54.825 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:02:11.331 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:02:11.477 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:02:11.710 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:02:12.519 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:02:12.778 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:02:13.188 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:02:22.167 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:02:22.724 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:02:22.917 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:02:22.917 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:02:23.102 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:02:23.863 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:06:09.232 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:06:09.524 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:06:15.658 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:06:19.051 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:06:19.887 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:06:20.010 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:06:20.610 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:06:21.254 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:07:01.902 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:07:02.220 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:07:02.445 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:07:02.663 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:07:56.291 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:07:56.866 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:07:57.782 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-26 22:08:08.655 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:12:06.071 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:12:07.785 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:12:08.719 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:12:08.895 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:12:09.064 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-26 22:12:21.962 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:12:29.467 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:12:30.070 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:12:45.533 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:12:49.751 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:12:52.374 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:12:53.005 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:12:55.902 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:12:58.022 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:12:58.614 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:16:04.992 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:16:05.591 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:16:05.932 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-26 22:16:06.242 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-26 22:19:32.549 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) +!SESSION 2015-11-27 19:45:13.004 ----------------------------------------------- +eclipse.buildId=M20130204-1200 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-11-27 19:45:41.599 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-11-27 19:45:41.641 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 19:55:08.578 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 19:55:09.903 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 19:55:11.204 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 19:55:11.520 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 19:55:11.906 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 19:55:13.923 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 19:57:14.403 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 19:58:04.295 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:03:51.249 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:03:53.174 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:03:56.574 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:05:05.191 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:05:38.530 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:04.830 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:07.529 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:08.604 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:08.855 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:09.062 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:27.663 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:44.443 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:46.829 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:47.065 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:47.332 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:48.170 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:48.637 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:48.704 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:48.932 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:49.112 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:49.397 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:49.524 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:49.654 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:49.829 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:49.933 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:50.204 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:50.301 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:52.631 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:53.199 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:53.263 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:53.308 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:53.638 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:53.891 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:54.162 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:55.325 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:57.999 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:58.394 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:59.142 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:59.555 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:59.620 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:59.706 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:06:59.979 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:00.125 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:00.314 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:00.536 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:00.759 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:00.945 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:01.510 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:05.128 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:05.453 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:05.878 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:05.908 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:06.226 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:06.467 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:19.382 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:19.657 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:20.980 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:21.340 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:21.429 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:23.444 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:23.687 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:25.122 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:25.249 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:25.743 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:27.338 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:29.843 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:30.001 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:30.180 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:30.660 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:07:31.004 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:22.328 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:23.851 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:24.005 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:24.301 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:24.499 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:24.694 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:24.948 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:25.146 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:25.549 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:25.802 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:25.985 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:28.614 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:28.893 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:29.272 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:29.561 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:34.333 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:34.570 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:35.096 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:35.382 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:35.570 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:35.713 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:36.466 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:36.909 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:37.221 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:38.994 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:39.096 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:39.281 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:39.521 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:39.729 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:40.496 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:40.745 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:40.963 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:41.152 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:41.417 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:41.705 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:41.930 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:42.141 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:42.622 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:43.691 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:43.998 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:44.414 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:44.763 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:45.054 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:45.324 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:45.514 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:45.780 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:46.074 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:46.275 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:46.450 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:46.561 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:08:49.688 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:15.818 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:16.487 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:16.634 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:16.798 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:16.944 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:18.011 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:18.866 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:19.074 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:19.296 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:19.507 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:19.728 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:19.972 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:20.438 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:20.640 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:30.629 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:31.127 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:31.242 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:32.781 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:40.331 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:41.000 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:50.236 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:50.470 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:09:50.726 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:10:29.280 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:10:31.267 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:10:36.066 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:10:36.251 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:11:14.929 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:11:17.153 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:11:17.961 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:00.503 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:01.613 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:02.248 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:02.850 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:03.373 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:03.795 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:04.011 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:04.278 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:04.464 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:04.608 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:04.711 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:04.932 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:05.011 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:05.323 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:05.634 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:05.765 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:05.827 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:06.043 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:06.333 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:06.845 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:07.023 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:07.576 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:07.790 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:08.010 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:08.208 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:08.448 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:09.528 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:09.805 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:10.054 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:10.186 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:11.239 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:23.133 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:30.473 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:30.765 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:38.341 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:39.704 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:41.687 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:45.162 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:47.425 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:47.659 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:48.559 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:48.895 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:49.362 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:49.578 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:49.669 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:49.905 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:50.137 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:50.324 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:50.458 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:51.055 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:51.529 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:51.722 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:51.942 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:52.289 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:52.388 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:52.447 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:52.503 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:52.809 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:52.920 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:53.494 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:54.034 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:54.907 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:56.116 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:57.205 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:57.508 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:58.432 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:12:59.828 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:13:01.690 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:13:02.672 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:13:02.858 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:13:03.069 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:13:30.520 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:13:31.428 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:13:32.453 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:13:33.679 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:13:53.560 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:13:53.619 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:13:53.654 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:14:01.110 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:14:36.302 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:14:37.033 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:16:05.686 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:16:07.001 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:17:45.251 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:17:48.601 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:17:53.213 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:18:17.379 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:18:18.047 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:18:20.520 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:18:21.367 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:18:37.279 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:18:37.472 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:18:37.858 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:18:37.906 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:22:10.332 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:22:12.487 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:22:12.639 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:23:12.013 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:23:15.183 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:25:16.546 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:26:54.599 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:28:11.612 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:28:18.398 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:28:27.743 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:44.649 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:45.344 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:47.912 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:48.012 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:49.674 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:50.780 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:51.353 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:52.142 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:52.282 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:52.504 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:52.515 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:52.767 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:52.996 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:53.036 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:53.536 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:54.116 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:54.740 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:56.437 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:57.550 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:58.765 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:58.993 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:38:59.290 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:06.345 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:07.234 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:07.822 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:08.392 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:09.200 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:09.794 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:10.537 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:10.795 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:11.021 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:11.194 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:12.434 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:12.925 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:14.029 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:14.212 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:14.404 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:14.620 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:14.810 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:15.030 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:15.191 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:17.020 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:34.538 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:35.235 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:35.776 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:35.867 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:38.440 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:39:38.952 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:40:53.616 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:40:55.264 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:40:55.553 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:41:03.938 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:41:04.280 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:42:11.047 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:42:18.273 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:42:20.560 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:44:16.919 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:45:12.496 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:19.010 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:21.613 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:23.215 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:23.648 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:23.913 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:24.091 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:24.358 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:24.907 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:25.077 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:25.628 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:26.037 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:26.323 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:26.540 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:26.696 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:27.129 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:27.621 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:27.952 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:28.206 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:28.836 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:29.947 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:30.584 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:31.923 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:32.207 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:34.268 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:34.662 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:34.924 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:35.231 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:35.696 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:36.109 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:36.555 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:37.052 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:37.401 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:48.054 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:48.487 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:50.281 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:50.801 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:51.294 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:55.638 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:57.905 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:45:59.582 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:46:01.088 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:46:01.422 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:46:03.717 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:46:09.344 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:46:11.878 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:09.949 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:11.418 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:15.614 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:17.541 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:17.867 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:18.554 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:26.954 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:30.277 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:31.323 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:31.574 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:32.039 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:32.096 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:39.109 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:40.057 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:41.037 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:41.301 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:42.577 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:42.956 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:49.552 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:53:54.436 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:00.842 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:01.437 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:01.810 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:02.316 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:02.509 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:03.600 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:03.811 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:04.009 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:04.029 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:07.315 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:13.957 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:14.038 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:14.392 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:16.366 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:16.441 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:17.191 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:17.918 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:18.530 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:19.068 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:20.242 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:20.843 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:21.370 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:21.898 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:22.277 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:22.772 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:23.057 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 20:54:23.880 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:56:52.600 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:58:14.186 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:58:15.124 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:58:16.648 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:58:18.177 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:58:20.782 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 20:58:22.886 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 21:03:05.832 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 21:03:06.277 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 21:03:52.449 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-27 21:07:27.680 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 21:07:48.763 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 21:09:12.584 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-27 21:09:13.918 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 01:05:41.613 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 01:05:44.151 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 01:05:44.343 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-28 01:16:05.340 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) +!SESSION 2015-11-28 15:59:27.160 ----------------------------------------------- +eclipse.buildId=M20130204-1200 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-11-28 15:59:54.084 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-11-28 15:59:54.216 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.jface.text 4 0 2015-11-28 16:02:05.449 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:07.751 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:09.103 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:09.912 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:10.227 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:10.602 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:10.912 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:11.340 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:11.730 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:12.066 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:12.336 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:12.595 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:12.849 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:13.052 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:13.235 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:13.674 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:13.940 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:14.250 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:14.582 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:15.338 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:16.458 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:16.700 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:16.981 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:28.901 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 16:04:29.580 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface 2 0 2015-11-28 20:53:46.036 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2015-11-28 20:53:46.036 +!MESSAGE A conflict occurred for ALT+SHIFT+ARROW_DOWN: +Binding(ALT+SHIFT+ARROW_DOWN, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.select.last,Restore Last Selection, + Restore last selection, + Category(org.eclipse.ui.category.edit,Edit,null,true), + org.eclipse.ui.internal.MakeHandlersGo@648639f1, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.jdt.ui.javaEditorScope,,,system) +Binding(ALT+SHIFT+ARROW_DOWN, + ParameterizedCommand(Command(org.eclipse.mylyn.tasks.ui.command.markTaskReadGoToNextUnread,Mark Task Read and Go To Next Unread Task, + , + Category(org.eclipse.mylyn.tasks.ui.commands,Task Repositories,null,true), + org.eclipse.ui.internal.MakeHandlersGo@210e971e, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.mylyn.tasks.ui.views.tasks,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2015-11-28 20:53:46.036 +!MESSAGE A conflict occurred for ALT+ARROW_DOWN: +Binding(ALT+ARROW_DOWN, + ParameterizedCommand(Command(org.eclipse.mylyn.tasks.ui.command.goToNextUnread,Go To Next Unread Task, + , + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.MakeHandlersGo@74f827ad, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.mylyn.tasks.ui.views.tasks,,,system) +Binding(ALT+ARROW_DOWN, + ParameterizedCommand(Command(org.eclipse.ui.edit.text.moveLineDown,Move Lines Down, + Moves the selected lines down, + Category(org.eclipse.ui.category.textEditor,Text Editing,Text Editing Commands,true), + org.eclipse.ui.internal.MakeHandlersGo@1b9785aa, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.textEditorScope,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2015-11-28 20:53:46.036 +!MESSAGE A conflict occurred for ALT+SHIFT+ARROW_UP: +Binding(ALT+SHIFT+ARROW_UP, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.select.enclosing,Select Enclosing Element, + Expand selection to include enclosing element, + Category(org.eclipse.ui.category.edit,Edit,null,true), + org.eclipse.ui.internal.MakeHandlersGo@340f4723, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.jdt.ui.javaEditorScope,,,system) +Binding(ALT+SHIFT+ARROW_UP, + ParameterizedCommand(Command(org.eclipse.mylyn.tasks.ui.command.markTaskReadGoToPreviousUnread,Mark Task Read and Go To Previous Unread Task, + , + Category(org.eclipse.mylyn.tasks.ui.commands,Task Repositories,null,true), + org.eclipse.ui.internal.MakeHandlersGo@6193a9e2, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.mylyn.tasks.ui.views.tasks,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2015-11-28 20:53:46.036 +!MESSAGE A conflict occurred for INSERT: +Binding(INSERT, + ParameterizedCommand(Command(org.eclipse.mylyn.tasks.ui.command.new.local.task,New Local Task, + , + Category(org.eclipse.mylyn.tasks.ui.commands,Task Repositories,null,true), + org.eclipse.ui.internal.MakeHandlersGo@347074a9, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.mylyn.tasks.ui.views.tasks,,,system) +Binding(INSERT, + ParameterizedCommand(Command(org.eclipse.ui.edit.text.toggleOverwrite,Toggle Overwrite, + Toggle overwrite mode, + Category(org.eclipse.ui.category.textEditor,Text Editing,Text Editing Commands,true), + org.eclipse.ui.internal.MakeHandlersGo@136d1d58, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.textEditorScope,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2015-11-28 20:53:46.036 +!MESSAGE A conflict occurred for ALT+SHIFT+U: +Binding(ALT+SHIFT+U, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.remove.occurrence.annotations,Remove Occurrence Annotations, + Removes the occurrence annotations from the current editor, + Category(org.eclipse.jdt.ui.category.source,Source,Java Source Actions,true), + org.eclipse.ui.internal.MakeHandlersGo@5d956649, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.jdt.ui.javaEditorScope,,,system) +Binding(ALT+SHIFT+U, + ParameterizedCommand(Command(org.eclipse.mylyn.tasks.ui.command.markTaskUnread,Mark Task Unread, + , + Category(org.eclipse.mylyn.tasks.ui.commands,Task Repositories,null,true), + org.eclipse.ui.internal.MakeHandlersGo@21b508a0, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.mylyn.tasks.ui.views.tasks,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2015-11-28 20:53:46.036 +!MESSAGE A conflict occurred for ALT+ARROW_UP: +Binding(ALT+ARROW_UP, + ParameterizedCommand(Command(org.eclipse.mylyn.tasks.ui.command.goToPreviousUnread,Go To Previous Unread Task, + , + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.MakeHandlersGo@705a8dbc, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.mylyn.tasks.ui.views.tasks,,,system) +Binding(ALT+ARROW_UP, + ParameterizedCommand(Command(org.eclipse.ui.edit.text.moveLineUp,Move Lines Up, + Moves the selected lines up, + Category(org.eclipse.ui.category.textEditor,Text Editing,Text Editing Commands,true), + org.eclipse.ui.internal.MakeHandlersGo@16d7f503, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.textEditorScope,,,system) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-28 20:55:48.082 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-28 20:55:48.644 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-28 20:55:49.694 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-28 20:56:50.012 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 20:58:00.467 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 20:58:00.563 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 20:59:56.709 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 20:59:59.853 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:01.390 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:03.574 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:04.128 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:04.768 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:04.986 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:05.412 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:05.429 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:06.073 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:08.073 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:08.834 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:10.323 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:10.975 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:11.321 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:11.582 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:11.919 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:12.430 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:12.710 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:13.229 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:13.485 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:13.703 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:14.098 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:14.387 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:14.614 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:14.890 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:15.352 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:15.626 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:15.735 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:15.921 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:16.397 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:17.330 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:17.747 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:18.013 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:18.522 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:19.746 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:20.205 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:24.556 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:25.109 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:25.402 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:25.697 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:26.060 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:26.363 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:26.600 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:00:26.824 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-28 21:03:11.229 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-28 21:03:12.766 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:07:16.518 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-28 21:07:17.118 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-28 21:10:50.411 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-28 21:48:04.113 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-28 22:53:07.342 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 00:48:56.112 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 00:48:56.347 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) +!SESSION 2015-11-29 17:59:18.759 ----------------------------------------------- +eclipse.buildId=M20130204-1200 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-11-29 17:59:42.793 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-11-29 17:59:42.843 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:14.678 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:15.069 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:15.149 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:15.261 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:15.462 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:15.689 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:15.888 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:16.423 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:16.671 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:16.874 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:17.083 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:17.271 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:17.477 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:17.669 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:17.836 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:18.015 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:18.467 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:18.568 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:18.668 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:18.986 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:19.225 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:19.914 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:20.219 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:20.466 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:20.665 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:20.859 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:21.038 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:21.261 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:21.457 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:22.188 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:22.766 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:23.070 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:23.338 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:23.530 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:23.731 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:23.923 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:24.378 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:51:24.600 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:52:07.632 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:52:08.243 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:52:08.885 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:56:52.862 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-29 20:57:02.859 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:57:55.427 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 20:57:56.083 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:00:10.264 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:00:58.678 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:00:59.038 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:00.598 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:00.764 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:00.784 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:01.111 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:01.523 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:01.581 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:02.340 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:02.566 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:02.595 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:02.852 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:04.062 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:04.068 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:05.248 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:05.358 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:06.911 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:01:07.985 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-29 21:30:41.639 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:37.924 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:38.688 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:38.917 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:40.169 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:40.592 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:40.817 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:41.101 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:41.159 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:41.336 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:41.472 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:41.482 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:42.039 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:42.168 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:42.358 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:42.464 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:42.561 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:42.568 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:42.942 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:43.015 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:43.065 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:43.101 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:43.393 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:43.454 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:43.669 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:43.735 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:43.927 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:43.955 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:44.179 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:44.386 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:44.557 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:44.589 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:44.613 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:44.645 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:44.812 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:44.855 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:45.008 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:45.067 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:45.338 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:45.369 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:45.741 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-29 21:33:45.808 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-29 21:43:27.386 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) +!SESSION 2015-11-30 17:19:41.356 ----------------------------------------------- +eclipse.buildId=M20130204-1200 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-11-30 17:20:01.860 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-11-30 17:20:01.961 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.jface.text 2 0 2015-11-30 19:24:50.287 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-30 19:24:50.803 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-30 19:24:50.901 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-30 19:29:29.922 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-30 19:29:30.616 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-30 19:36:33.327 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-30 19:37:11.357 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-30 19:43:28.925 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-30 19:51:05.215 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-30 19:57:26.083 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-30 19:57:26.272 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 2 0 2015-11-30 19:57:27.324 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-30 20:00:02.213 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-30 20:27:03.890 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryMethod.getAttachedJavadoc(BinaryMethod.java:639) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) + +!ENTRY org.eclipse.jface.text 4 0 2015-11-30 21:03:02.484 +!MESSAGE Unexpected runtime error while computing a text hover +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryField.getAttachedJavadoc(BinaryField.java:121) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo(JavadocHover.java:619) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:565) + at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:557) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:163) + at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) + at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:85) + at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) +!SESSION 2015-12-02 20:47:16.101 ----------------------------------------------- +eclipse.buildId=M20130204-1200 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-02 20:47:35.209 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-02 20:47:35.535 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.jface.text 2 0 2015-12-02 21:57:22.898 +!MESSAGE +!STACK 0 +java.lang.StringIndexOutOfBoundsException: String index out of range: -10 + at java.lang.String.checkBounds(Unknown Source) + at java.lang.String.(Unknown Source) + at org.eclipse.jdt.internal.core.JavaElement.getURLContents(JavaElement.java:786) + at org.eclipse.jdt.internal.core.BinaryType.getJavadocContents(BinaryType.java:1037) + at org.eclipse.jdt.internal.core.BinaryType.getAttachedJavadoc(BinaryType.java:995) + at org.eclipse.jdt.internal.ui.text.javadoc.JavadocContentAccess2.getHTMLContent(JavadocContentAccess2.java:463) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.extractJavadoc(ProposalInfo.java:95) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.computeInfo(ProposalInfo.java:75) + at org.eclipse.jdt.internal.ui.text.java.ProposalInfo.getInfo(ProposalInfo.java:58) + at org.eclipse.jdt.internal.ui.text.java.AbstractJavaCompletionProposal.getAdditionalProposalInfo(AbstractJavaCompletionProposal.java:555) + at org.eclipse.jface.text.contentassist.AdditionalInfoController$3.run(AdditionalInfoController.java:106) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.jst.jsp.core 2 2 2015-12-02 22:12:54.563 +!MESSAGE Taglib Index ZipException: D:/Z - Norbi cucca/0 Projektek/TheButtonMCAutoFlairProto/Spigot plugin/TheButtonAutoFlair/MANIFEST.MF error in opening zip file + +!ENTRY org.eclipse.jdt.core 4 0 2015-12-02 22:12:55.194 +!MESSAGE Invalid ZIP archive: MANIFEST.MF [in TheButtonAutoFlair] + +!ENTRY org.eclipse.jdt.core 4 0 2015-12-02 22:13:59.145 +!MESSAGE Invalid ZIP archive: MANIFEST.MF [in TheButtonAutoFlair] + +!ENTRY org.eclipse.jdt.core 4 0 2015-12-02 22:15:14.528 +!MESSAGE Invalid ZIP archive: MANIFEST.MF [in TheButtonAutoFlair] +!SESSION 2015-12-02 22:16:23.837 ----------------------------------------------- +eclipse.buildId=M20130204-1200 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-02 22:16:55.612 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-02 22:16:55.613 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2015-12-04 17:34:42.348 ----------------------------------------------- +eclipse.buildId=M20130204-1200 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 17:35:05.399 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 17:35:05.533 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.help.base 4 0 2015-12-04 17:41:30.493 +!MESSAGE Help index declared, but missing for plugin org.eclipse.rse.doc.user. +!SESSION 2015-12-04 17:44:48.552 ----------------------------------------------- +eclipse.buildId=M20130204-1200 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.ui 4 4 2015-12-04 17:45:03.497 +!MESSAGE Unable to find Action Set: adt.actionSet.wizards + +!ENTRY org.eclipse.ui 4 4 2015-12-04 17:45:03.501 +!MESSAGE Unable to find Action Set: adt.actionSet.avdManager + +!ENTRY org.eclipse.ui 4 4 2015-12-04 17:45:03.501 +!MESSAGE Unable to find Action Set: adt.actionSet.lint + +!ENTRY org.eclipse.ui 4 4 2015-12-04 17:45:03.501 +!MESSAGE Unable to find Action Set: adt.actionSet.refactorings + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 17:45:08.390 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 17:45:08.391 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.ui 2 2 2015-12-04 17:45:14.601 +!MESSAGE Invalid preference category path: com.android.ide.eclipse.preferences.main (bundle: com.android.ide.eclipse.base, page: com.android.ide.eclipse.common.preferences.UsagePreferencePage) + +!ENTRY org.eclipse.ui 2 2 2015-12-04 17:45:14.601 +!MESSAGE Invalid preference category path: com.android.ide.eclipse.preferences.main (bundle: com.android.ide.eclipse.ddms, page: com.android.ide.eclipse.ddms.preferences.PreferencePage) + +!ENTRY org.eclipse.ui 2 2 2015-12-04 17:45:14.602 +!MESSAGE Invalid preference category path: com.android.ide.eclipse.preferences.main (bundle: com.android.ide.eclipse.ddms, page: com.android.ide.eclipse.ddms.preferences.LogCatPreferencePage) + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 17:51:46.749 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:51:46.749 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.749 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.749 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.749 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.749 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:51:46.749 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.749 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.749 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:51:46.749 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.749 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.749 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 17:51:46.755 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:51:46.756 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.756 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.756 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.756 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.756 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:51:46.756 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.756 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.756 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:51:46.756 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.756 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:51:46.756 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 17:53:56.807 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:53:56.808 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.808 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.808 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.808 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.808 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:53:56.808 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.808 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.808 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:53:56.808 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.808 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.808 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 17:53:56.810 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:53:56.810 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.810 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.810 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.810 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.810 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:53:56.810 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.810 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.810 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:53:56.810 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.810 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:53:56.810 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 17:54:07.884 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:54:07.884 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.884 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.884 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.884 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.884 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:54:07.884 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.884 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.884 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:54:07.884 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.884 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.884 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 17:54:07.886 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:54:07.886 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.886 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.886 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.886 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.886 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle org.eclipse.osgi 3.10.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:54:07.886 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.886 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.886 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:54:07.886 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.886 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:54:07.886 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] +!SESSION 2015-12-04 17:57:44.615 ----------------------------------------------- +eclipse.buildId=M20130204-1200 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.ui 4 4 2015-12-04 17:57:56.637 +!MESSAGE Unable to find Action Set: adt.actionSet.wizards + +!ENTRY org.eclipse.ui 4 4 2015-12-04 17:57:56.642 +!MESSAGE Unable to find Action Set: adt.actionSet.avdManager + +!ENTRY org.eclipse.ui 4 4 2015-12-04 17:57:56.642 +!MESSAGE Unable to find Action Set: adt.actionSet.lint + +!ENTRY org.eclipse.ui 4 4 2015-12-04 17:57:56.642 +!MESSAGE Unable to find Action Set: adt.actionSet.refactorings + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 17:58:01.586 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 17:58:01.586 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.equinox.p2.core 4 0 2015-12-04 17:58:16.812 +!MESSAGE Provisioning exception +!STACK 1 +org.eclipse.equinox.p2.core.ProvisionException: No repository found at http://mvnrepository.com/artifact/org.eclipse/osgi/3.10.0-v20140606-1445. + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.fail(AbstractRepositoryManager.java:393) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:675) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102) + at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83) + at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) +!SUBENTRY 1 org.eclipse.equinox.p2.metadata.repository 4 1000 2015-12-04 17:58:16.814 +!MESSAGE No repository found at http://mvnrepository.com/artifact/org.eclipse/osgi/3.10.0-v20140606-1445. + +!ENTRY org.eclipse.equinox.p2.core 4 0 2015-12-04 17:58:26.450 +!MESSAGE Provisioning exception +!STACK 1 +org.eclipse.equinox.p2.core.ProvisionException: No repository found at file:/D:/Downloads/osgi-3.10.0-v20140606-1445.jar. + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.fail(AbstractRepositoryManager.java:393) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:675) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102) + at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83) + at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) +!SUBENTRY 1 org.eclipse.equinox.p2.metadata.repository 4 1000 2015-12-04 17:58:26.451 +!MESSAGE No repository found at file:/D:/Downloads/osgi-3.10.0-v20140606-1445.jar. + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 17:58:40.937 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:58:40.938 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.938 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.938 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle org.eclipse.core.resources 3.9.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.938 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle org.eclipse.core.resources 3.9.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.938 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle org.eclipse.core.resources 3.9.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:58:40.938 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.938 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.938 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:58:40.938 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.938 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.938 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 17:58:40.947 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:58:40.947 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.947 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.947 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle org.eclipse.core.resources 3.9.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.947 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle org.eclipse.core.resources 3.9.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.947 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle org.eclipse.core.resources 3.9.0' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:58:40.947 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.947 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.947 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 17:58:40.947 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.947 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 17:58:40.947 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] + +!ENTRY org.eclipse.ui 2 2 2015-12-04 18:00:30.954 +!MESSAGE Invalid preference category path: com.android.ide.eclipse.preferences.main (bundle: com.android.ide.eclipse.base, page: com.android.ide.eclipse.common.preferences.UsagePreferencePage) + +!ENTRY org.eclipse.ui 2 2 2015-12-04 18:00:30.955 +!MESSAGE Invalid preference category path: com.android.ide.eclipse.preferences.main (bundle: com.android.ide.eclipse.ddms, page: com.android.ide.eclipse.ddms.preferences.PreferencePage) + +!ENTRY org.eclipse.ui 2 2 2015-12-04 18:00:30.956 +!MESSAGE Invalid preference category path: com.android.ide.eclipse.preferences.main (bundle: com.android.ide.eclipse.ddms, page: com.android.ide.eclipse.ddms.preferences.LogCatPreferencePage) + +!ENTRY org.eclipse.equinox.p2.core 4 0 2015-12-04 18:01:17.478 +!MESSAGE Provisioning exception +!STACK 1 +org.eclipse.equinox.p2.core.ProvisionException: No repository found at file:/D:/Downloads/osgi-3.10.0-v20140606-1445.jar. + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.fail(AbstractRepositoryManager.java:393) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:636) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102) + at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83) + at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) +!SUBENTRY 1 org.eclipse.equinox.p2.metadata.repository 4 1000 2015-12-04 18:01:17.478 +!MESSAGE No repository found at file:/D:/Downloads/osgi-3.10.0-v20140606-1445.jar. + +!ENTRY org.eclipse.equinox.p2.core 4 0 2015-12-04 18:03:48.987 +!MESSAGE Provisioning exception +!STACK 1 +org.eclipse.equinox.p2.core.ProvisionException: Unable to read repository at http://projects.eclipse.org/projects/birt. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:128) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:57) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:758) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:651) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102) + at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83) + at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) +Caused by: java.io.IOException: http://projects.eclipse.org/projects/birt is not a valid repository location. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:102) + ... 10 more +!SUBENTRY 1 org.eclipse.equinox.p2.metadata.repository 4 1002 2015-12-04 18:03:48.988 +!MESSAGE Unable to read repository at http://projects.eclipse.org/projects/birt. +!STACK 0 +java.io.IOException: http://projects.eclipse.org/projects/birt is not a valid repository location. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:102) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:57) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:758) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:651) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102) + at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83) + at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) +!SESSION 2015-12-04 18:05:34.424 ----------------------------------------------- +eclipse.buildId=M20130204-1200 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:05:44.729 +!MESSAGE Unable to find Action Set: adt.actionSet.wizards + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:05:44.735 +!MESSAGE Unable to find Action Set: adt.actionSet.avdManager + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:05:44.736 +!MESSAGE Unable to find Action Set: adt.actionSet.lint + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:05:44.737 +!MESSAGE Unable to find Action Set: adt.actionSet.refactorings + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 18:05:51.528 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 18:05:51.529 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.ui 2 2 2015-12-04 18:06:21.758 +!MESSAGE Invalid preference category path: com.android.ide.eclipse.preferences.main (bundle: com.android.ide.eclipse.base, page: com.android.ide.eclipse.common.preferences.UsagePreferencePage) + +!ENTRY org.eclipse.ui 2 2 2015-12-04 18:06:21.758 +!MESSAGE Invalid preference category path: com.android.ide.eclipse.preferences.main (bundle: com.android.ide.eclipse.ddms, page: com.android.ide.eclipse.ddms.preferences.PreferencePage) + +!ENTRY org.eclipse.ui 2 2 2015-12-04 18:06:21.759 +!MESSAGE Invalid preference category path: com.android.ide.eclipse.preferences.main (bundle: com.android.ide.eclipse.ddms, page: com.android.ide.eclipse.ddms.preferences.LogCatPreferencePage) + +!ENTRY org.eclipse.equinox.p2.core 4 0 2015-12-04 18:06:34.092 +!MESSAGE Provisioning exception +!STACK 1 +org.eclipse.equinox.p2.core.ProvisionException: Unable to read repository at http://projects.eclipse.org/projects/birt. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:128) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:57) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:758) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:651) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102) + at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83) + at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) +Caused by: java.io.IOException: http://projects.eclipse.org/projects/birt is not a valid repository location. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:102) + ... 10 more +!SUBENTRY 1 org.eclipse.equinox.p2.metadata.repository 4 1002 2015-12-04 18:06:34.093 +!MESSAGE Unable to read repository at http://projects.eclipse.org/projects/birt. +!STACK 0 +java.io.IOException: http://projects.eclipse.org/projects/birt is not a valid repository location. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:102) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:57) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:758) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:651) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102) + at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83) + at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 18:06:48.770 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:06:48.770 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.770 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.770 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.770 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.770 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:06:48.770 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.770 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.770 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:06:48.770 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.770 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.770 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 18:06:48.778 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:06:48.779 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.779 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.779 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.779 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.779 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:06:48.779 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.779 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.779 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:06:48.779 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.779 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:06:48.779 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 18:07:58.050 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:07:58.050 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.050 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.050 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.050 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.050 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:07:58.050 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.050 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.050 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:07:58.050 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.051 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.051 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 18:07:58.052 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:07:58.052 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.052 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.052 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.052 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.052 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:07:58.052 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.052 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.052 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:07:58.052 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.052 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:07:58.052 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] +!SESSION 2015-12-04 18:08:04.903 ----------------------------------------------- +eclipse.buildId=M20130204-1200 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:08:20.287 +!MESSAGE Unable to find Action Set: adt.actionSet.wizards + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:08:20.291 +!MESSAGE Unable to find Action Set: adt.actionSet.avdManager + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:08:20.291 +!MESSAGE Unable to find Action Set: adt.actionSet.lint + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:08:20.292 +!MESSAGE Unable to find Action Set: adt.actionSet.refactorings + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 18:08:25.425 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 18:08:25.427 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.equinox.p2.core 4 0 2015-12-04 18:08:36.422 +!MESSAGE Provisioning exception +!STACK 1 +org.eclipse.equinox.p2.core.ProvisionException: Unable to read repository at http://projects.eclipse.org/projects/birt. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:128) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:57) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:758) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:651) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102) + at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83) + at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) +Caused by: java.io.IOException: http://projects.eclipse.org/projects/birt is not a valid repository location. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:102) + ... 10 more +!SUBENTRY 1 org.eclipse.equinox.p2.metadata.repository 4 1002 2015-12-04 18:08:36.425 +!MESSAGE Unable to read repository at http://projects.eclipse.org/projects/birt. +!STACK 0 +java.io.IOException: http://projects.eclipse.org/projects/birt is not a valid repository location. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:102) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:57) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:758) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:651) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102) + at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83) + at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 18:08:51.690 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:08:51.690 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.690 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.690 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.690 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.690 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:08:51.690 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.690 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.690 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:08:51.690 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.690 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.690 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 18:08:51.698 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:08:51.699 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.699 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.699 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.699 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.699 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:08:51.700 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.700 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.700 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:08:51.700 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.700 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:08:51.700 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] +!SESSION 2015-12-04 18:10:17.984 ----------------------------------------------- +eclipse.buildId=M20130204-1200 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:10:33.263 +!MESSAGE Unable to find Action Set: adt.actionSet.wizards + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:10:33.268 +!MESSAGE Unable to find Action Set: adt.actionSet.avdManager + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:10:33.269 +!MESSAGE Unable to find Action Set: adt.actionSet.lint + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:10:33.269 +!MESSAGE Unable to find Action Set: adt.actionSet.refactorings + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 18:10:38.473 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 18:10:38.474 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.equinox.p2.core 4 0 2015-12-04 18:10:49.549 +!MESSAGE Provisioning exception +!STACK 1 +org.eclipse.equinox.p2.core.ProvisionException: Unable to read repository at http://projects.eclipse.org/projects/birt. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:128) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:57) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:758) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:651) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102) + at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83) + at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) +Caused by: java.io.IOException: http://projects.eclipse.org/projects/birt is not a valid repository location. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:102) + ... 10 more +!SUBENTRY 1 org.eclipse.equinox.p2.metadata.repository 4 1002 2015-12-04 18:10:49.551 +!MESSAGE Unable to read repository at http://projects.eclipse.org/projects/birt. +!STACK 0 +java.io.IOException: http://projects.eclipse.org/projects/birt is not a valid repository location. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:102) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:57) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:758) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:651) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102) + at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83) + at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 18:11:05.568 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:11:05.568 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.568 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.568 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.568 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.568 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:11:05.568 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.568 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.569 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:11:05.569 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.569 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.569 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 18:11:05.578 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:11:05.578 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.578 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.578 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.578 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.578 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:11:05.578 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.578 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.578 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:11:05.578 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.578 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:11:05.578 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] +!SESSION 2015-12-04 18:14:44.644 ----------------------------------------------- +eclipse.buildId=M20130204-1200 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:15:04.134 +!MESSAGE Unable to find Action Set: adt.actionSet.wizards + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:15:04.169 +!MESSAGE Unable to find Action Set: adt.actionSet.avdManager + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:15:04.170 +!MESSAGE Unable to find Action Set: adt.actionSet.lint + +!ENTRY org.eclipse.ui 4 4 2015-12-04 18:15:04.170 +!MESSAGE Unable to find Action Set: adt.actionSet.refactorings + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 18:15:10.128 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 18:15:10.129 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.equinox.p2.core 4 0 2015-12-04 18:15:21.357 +!MESSAGE Provisioning exception +!STACK 1 +org.eclipse.equinox.p2.core.ProvisionException: Unable to read repository at http://projects.eclipse.org/projects/birt. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:128) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:57) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:758) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:651) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102) + at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83) + at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) +Caused by: java.io.IOException: http://projects.eclipse.org/projects/birt is not a valid repository location. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:102) + ... 10 more +!SUBENTRY 1 org.eclipse.equinox.p2.metadata.repository 4 1002 2015-12-04 18:15:21.359 +!MESSAGE Unable to read repository at http://projects.eclipse.org/projects/birt. +!STACK 0 +java.io.IOException: http://projects.eclipse.org/projects/birt is not a valid repository location. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:102) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:57) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:758) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:651) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102) + at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83) + at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 18:15:36.465 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:15:36.465 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.466 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.466 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.466 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.466 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:15:36.466 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.466 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.466 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:15:36.466 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.466 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.466 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] + +!ENTRY org.eclipse.equinox.p2.operations 4 0 2015-12-04 18:15:36.472 +!MESSAGE Operation details +!SUBENTRY 1 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:15:36.472 +!MESSAGE Cannot complete the install because one or more required items could not be found. +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.472 +!MESSAGE Software being installed: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.472 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.0.20150526-2032 (org.eclipse.m2e.core 1.6.0.20150526-2032) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.472 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.1.20150625-2338 (org.eclipse.m2e.core 1.6.1.20150625-2338) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.472 +!MESSAGE Missing requirement: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core 1.6.2.20150902-0002) requires 'bundle com.google.guava [14.0.1,16.0.0)' but it could not be found +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:15:36.472 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.472 +!MESSAGE From: Maven Integration for Eclipse 1.6.2.20150902-0002 (org.eclipse.m2e.core.ui 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.472 +!MESSAGE To: bundle org.eclipse.m2e.core [1.6.0,1.7.0) +!SUBENTRY 2 org.eclipse.equinox.p2.director 4 1 2015-12-04 18:15:36.472 +!MESSAGE Cannot satisfy dependency: +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.472 +!MESSAGE From: m2e - Maven Integration for Eclipse (includes Incubating components) 1.6.2.20150902-0002 (org.eclipse.m2e.feature.feature.group 1.6.2.20150902-0002) +!SUBENTRY 3 org.eclipse.equinox.p2.director 4 0 2015-12-04 18:15:36.472 +!MESSAGE To: org.eclipse.m2e.core.ui [1.6.2.20150902-0002] + +!ENTRY org.eclipse.ui 2 2 2015-12-04 18:18:41.739 +!MESSAGE Invalid preference category path: com.android.ide.eclipse.preferences.main (bundle: com.android.ide.eclipse.base, page: com.android.ide.eclipse.common.preferences.UsagePreferencePage) + +!ENTRY org.eclipse.ui 2 2 2015-12-04 18:18:41.740 +!MESSAGE Invalid preference category path: com.android.ide.eclipse.preferences.main (bundle: com.android.ide.eclipse.ddms, page: com.android.ide.eclipse.ddms.preferences.PreferencePage) + +!ENTRY org.eclipse.ui 2 2 2015-12-04 18:18:41.740 +!MESSAGE Invalid preference category path: com.android.ide.eclipse.preferences.main (bundle: com.android.ide.eclipse.ddms, page: com.android.ide.eclipse.ddms.preferences.LogCatPreferencePage) + +!ENTRY org.eclipse.equinox.p2.core 4 0 2015-12-04 18:19:04.072 +!MESSAGE Provisioning exception +!STACK 1 +org.eclipse.equinox.p2.core.ProvisionException: Unable to read repository at http://projects.eclipse.org/projects/birt. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:128) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:57) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:758) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:651) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102) + at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83) + at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) +Caused by: java.io.IOException: http://projects.eclipse.org/projects/birt is not a valid repository location. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:102) + ... 10 more +!SUBENTRY 1 org.eclipse.equinox.p2.metadata.repository 4 1002 2015-12-04 18:19:04.072 +!MESSAGE Unable to read repository at http://projects.eclipse.org/projects/birt. +!STACK 0 +java.io.IOException: http://projects.eclipse.org/projects/birt is not a valid repository location. + at org.eclipse.equinox.internal.p2.metadata.repository.SimpleMetadataRepositoryFactory.load(SimpleMetadataRepositoryFactory.java:102) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.factoryLoad(MetadataRepositoryManager.java:57) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:758) + at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:651) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96) + at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.doLoad(LoadMetadataRepositoryJob.java:117) + at org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob.runModal(LoadMetadataRepositoryJob.java:102) + at org.eclipse.equinox.internal.p2.ui.sdk.PreloadingRepositoryHandler$2.runModal(PreloadingRepositoryHandler.java:83) + at org.eclipse.equinox.p2.operations.ProvisioningJob.run(ProvisioningJob.java:177) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) + +!ENTRY org.eclipse.equinox.p2.touchpoint.natives 4 0 2015-12-04 18:26:52.353 +!MESSAGE org.eclipse.equinox.internal.p2.touchpoint.natives.actions.UnzipAction error unzipping zipfile: D:\Downloads\eclipse-jee-juno-SR2-win32-x86_64\eclipse\p2\org.eclipse.equinox.p2.core\cache\binary\epp.package.jee.executable.win32.win32.x86_64_4.4.2.20150219-0708destination: D:\Downloads\eclipse-jee-juno-SR2-win32-x86_64\eclipse + +!ENTRY org.eclipse.equinox.p2.touchpoint.natives 4 0 2015-12-04 18:26:52.554 +!MESSAGE org.eclipse.equinox.internal.p2.touchpoint.natives.actions.UnzipAction error unzipping zipfile: D:\Downloads\eclipse-jee-juno-SR2-win32-x86_64\eclipse\p2\org.eclipse.equinox.p2.core\cache\binary\org.eclipse.platform.ide.executable.win32.win32.x86_64_4.4.2.M20150204-1700destination: D:\Downloads\eclipse-jee-juno-SR2-win32-x86_64\eclipse + +!ENTRY org.eclipse.equinox.p2.touchpoint.natives 4 0 2015-12-04 18:26:52.735 +!MESSAGE org.eclipse.equinox.internal.p2.touchpoint.natives.actions.UnzipAction error unzipping zipfile: D:\Downloads\eclipse-jee-juno-SR2-win32-x86_64\eclipse\p2\org.eclipse.equinox.p2.core\cache\binary\org.eclipse.rcp.configuration_root.win32.win32.x86_64_1.0.3.v20150204-1745destination: D:\Downloads\eclipse-jee-juno-SR2-win32-x86_64\eclipse +!SESSION 2015-12-04 18:27:53.304 ----------------------------------------------- +eclipse.buildId=4.4.2.M20150204-1700 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 18:29:25.593 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 18:29:25.594 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.ui 2 2 2015-12-04 18:31:49.549 +!MESSAGE Invalid preference category path: com.android.ide.eclipse.preferences.main (bundle: com.android.ide.eclipse.base, page: com.android.ide.eclipse.common.preferences.UsagePreferencePage) + +!ENTRY org.eclipse.ui 2 2 2015-12-04 18:31:49.550 +!MESSAGE Invalid preference category path: com.android.ide.eclipse.preferences.main (bundle: com.android.ide.eclipse.ddms, page: com.android.ide.eclipse.ddms.preferences.PreferencePage) + +!ENTRY org.eclipse.ui 2 2 2015-12-04 18:31:49.550 +!MESSAGE Invalid preference category path: com.android.ide.eclipse.preferences.main (bundle: com.android.ide.eclipse.ddms, page: com.android.ide.eclipse.ddms.preferences.LogCatPreferencePage) + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:50:31.696 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:50:31.725 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:50:34.085 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:50:34.109 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:50:35.484 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:50:35.490 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:53:18.208 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:53:18.213 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.wst.sse.core 4 4 2015-12-04 18:55:16.461 +!MESSAGE Invalid thread access +!STACK 0 +org.eclipse.swt.SWTException: Invalid thread access + at org.eclipse.swt.SWT.error(SWT.java:4441) + at org.eclipse.swt.SWT.error(SWT.java:4356) + at org.eclipse.swt.SWT.error(SWT.java:4327) + at org.eclipse.swt.widgets.Widget.error(Widget.java:476) + at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:367) + at org.eclipse.swt.widgets.Table.setRedraw(Table.java:4784) + at org.eclipse.jface.viewers.AbstractTableViewer.inputChanged(AbstractTableViewer.java:562) + at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:292) + at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1675) + at org.eclipse.m2e.editor.composites.ListEditorComposite.setInput(ListEditorComposite.java:135) + at org.eclipse.m2e.editor.composites.DependenciesComposite.setDependenciesInput(DependenciesComposite.java:823) + at org.eclipse.m2e.editor.composites.DependenciesComposite.loadData(DependenciesComposite.java:588) + at org.eclipse.m2e.editor.pom.DependenciesPage.loadData(DependenciesPage.java:94) + at org.eclipse.m2e.editor.pom.MavenPomEditorPage$1.modelChanged(MavenPomEditorPage.java:137) + at org.eclipse.wst.sse.core.internal.model.AbstractStructuredModel.fireModelChanged(AbstractStructuredModel.java:526) + at org.eclipse.wst.sse.core.internal.model.AbstractStructuredModel.internalModelChanged(AbstractStructuredModel.java:837) + at org.eclipse.wst.sse.core.internal.model.AbstractStructuredModel.changedModel(AbstractStructuredModel.java:361) + at org.eclipse.wst.xml.core.internal.document.DOMModelImpl.changedModel(DOMModelImpl.java:171) + at org.eclipse.m2e.core.ui.internal.editing.PomEdits.performOnDOMDocument(PomEdits.java:518) + at org.eclipse.m2e.editor.dialogs.ManageDependenciesDialog$2.run(ManageDependenciesDialog.java:264) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:55:18.059 +!MESSAGE The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:55:18.156 +!MESSAGE The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:55:18.181 +!MESSAGE The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:55:18.421 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:55:18.427 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 4 0 2015-12-04 18:55:50.039 +!MESSAGE Could not resolve artifact org.spigotmc:spigot-api:pom:1.8.7-R0.1-SNAPSHOT +!STACK 1 +org.eclipse.core.runtime.CoreException: Could not resolve artifact org.spigotmc:spigot-api:pom:1.8.7-R0.1-SNAPSHOT + at org.eclipse.m2e.core.internal.embedder.MavenImpl$5.call(MavenImpl.java:776) + at org.eclipse.m2e.core.internal.embedder.MavenImpl$5.call(MavenImpl.java:1) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99) + at org.eclipse.m2e.core.internal.embedder.MavenImpl.resolve(MavenImpl.java:743) + at org.eclipse.m2e.core.internal.embedder.MavenImpl.resolve(MavenImpl.java:720) + at org.eclipse.m2e.core.ui.internal.actions.OpenPomAction.openPomEditor(OpenPomAction.java:243) + at org.eclipse.m2e.core.ui.internal.actions.OpenPomAction.openEditor(OpenPomAction.java:218) + at org.eclipse.m2e.core.ui.internal.actions.OpenPomAction$1.run(OpenPomAction.java:129) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) +Contains: Missing org.spigotmc:spigot-api:pom:1.8.7-R0.1-SNAPSHOT +!SUBENTRY 1 org.eclipse.m2e.core 4 -1 2015-12-04 18:55:50.040 +!MESSAGE Could not resolve artifact org.spigotmc:spigot-api:pom:1.8.7-R0.1-SNAPSHOT +!SUBENTRY 2 org.eclipse.m2e.core 4 -1 2015-12-04 18:55:50.040 +!MESSAGE Missing org.spigotmc:spigot-api:pom:1.8.7-R0.1-SNAPSHOT + +!ENTRY org.eclipse.m2e.logback.appender 4 0 2015-12-04 18:56:44.644 +!MESSAGE Could not resolve artifact org.spigotmc:spigot-api:pom:1.8.7-R0.1-SNAPSHOT +!STACK 1 +org.eclipse.core.runtime.CoreException: Could not resolve artifact org.spigotmc:spigot-api:pom:1.8.7-R0.1-SNAPSHOT + at org.eclipse.m2e.core.internal.embedder.MavenImpl$5.call(MavenImpl.java:776) + at org.eclipse.m2e.core.internal.embedder.MavenImpl$5.call(MavenImpl.java:1) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99) + at org.eclipse.m2e.core.internal.embedder.MavenImpl.resolve(MavenImpl.java:743) + at org.eclipse.m2e.core.internal.embedder.MavenImpl.resolve(MavenImpl.java:720) + at org.eclipse.m2e.core.ui.internal.actions.OpenPomAction.openPomEditor(OpenPomAction.java:243) + at org.eclipse.m2e.core.ui.internal.actions.OpenPomAction.openEditor(OpenPomAction.java:218) + at org.eclipse.m2e.editor.pom.DependencyTreePage$3.open(DependencyTreePage.java:315) + at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:853) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:50) + at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:178) + at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:850) + at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1142) + at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1249) + at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:278) + at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:272) + at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:313) + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4353) + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061) + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4172) + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3761) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032) + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148) + at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636) + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579) + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) + at java.lang.reflect.Method.invoke(Unknown Source) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603) + at org.eclipse.equinox.launcher.Main.run(Main.java:1465) +Contains: Missing org.spigotmc:spigot-api:pom:1.8.7-R0.1-SNAPSHOT +!SUBENTRY 1 org.eclipse.m2e.core 4 -1 2015-12-04 18:56:44.645 +!MESSAGE Could not resolve artifact org.spigotmc:spigot-api:pom:1.8.7-R0.1-SNAPSHOT +!SUBENTRY 2 org.eclipse.m2e.core 4 -1 2015-12-04 18:56:44.645 +!MESSAGE Missing org.spigotmc:spigot-api:pom:1.8.7-R0.1-SNAPSHOT + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:58:45.626 +!MESSAGE The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:58:45.715 +!MESSAGE The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:58:45.732 +!MESSAGE The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:58:45.963 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:58:45.978 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:58:48.307 +!MESSAGE The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:58:48.417 +!MESSAGE The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:58:48.436 +!MESSAGE The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:58:48.686 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 18:58:48.690 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:00:27.259 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:00:27.276 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:03:44.133 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:03:44.138 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:03:45.514 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:03:45.528 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:11:24.982 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:11:24.990 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:12:07.675 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:12:07.681 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:12:23.125 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:12:23.131 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:12:24.460 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:12:24.472 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:13:43.164 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:13:43.171 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +!SESSION 2015-12-04 19:16:01.190 ----------------------------------------------- +eclipse.buildId=4.4.2.M20150204-1700 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 19:16:34.207 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 19:16:34.208 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:16:41.221 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:16:41.249 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:20:14.439 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:20:14.450 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:20:47.063 +!MESSAGE The POM for htmlcleaner:htmlcleaner:jar:2.16 is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:20:47.068 +!MESSAGE The POM for htmlcleaner:htmlcleaner:jar:2.16 is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:20:48.106 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:20:48.112 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:21:11.999 +!MESSAGE The POM for htmlcleaner:htmlcleaner:jar:2.16 is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:21:12.920 +!MESSAGE The POM for htmlcleaner:htmlcleaner:jar:2.16 is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:21:13.435 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:21:13.442 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:21:14.633 +!MESSAGE The POM for htmlcleaner:htmlcleaner:jar:2.16 is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:21:14.670 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:21:14.672 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:21:22.706 +!MESSAGE The POM for htmlcleaner:htmlcleaner:jar:2.16 is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:21:23.140 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:21:23.145 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:21:42.312 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:21:42.348 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:21:44.317 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:21:44.341 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:22:10.338 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:22:10.345 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:23:12.761 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:23:12.764 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:23:38.736 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:23:38.761 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:25:24.731 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 19:25:24.741 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:16:56.567 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:16:56.575 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:17:04.872 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:17:04.882 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:17:37.163 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:17:37.169 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:17:59.144 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:17:59.148 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:18:11.759 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:18:11.767 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:22:50.841 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:22:50.847 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:30:39.150 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:30:39.153 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:31:33.707 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:31:33.718 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:31:53.794 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:31:53.797 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:32:34.244 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:32:34.246 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:36:08.747 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:36:08.749 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 4 0 2015-12-04 20:48:41.822 +!MESSAGE Could not read pom.xml +!STACK 1 +org.eclipse.core.runtime.CoreException: Could not read pom.xml + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:565) + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:574) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refreshPhase2(ProjectRegistryManager.java:541) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:497) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:350) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:297) + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.getProjectFacade(MavenBuilder.java:154) + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod$1.call(MavenBuilder.java:89) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99) + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:86) + at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:200) + at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246) + at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:299) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:302) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:263) + at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:401) + at org.eclipse.core.internal.resources.Project$1.run(Project.java:618) + at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313) + at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597) + at org.eclipse.core.internal.resources.Project.build(Project.java:114) + at org.eclipse.jdt.internal.ui.jarpackager.JarFileExportOperation.buildProjects(JarFileExportOperation.java:1159) + at org.eclipse.jdt.internal.ui.jarpackager.JarFileExportOperation.singleRun(JarFileExportOperation.java:1006) + at org.eclipse.jdt.internal.ui.jarpackager.JarFileExportOperation.execute(JarFileExportOperation.java:987) + at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:106) + at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313) + at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:118) + at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122) +Caused by: org.apache.maven.model.io.ModelParseException: Duplicated tag: 'build' (position: START_TAG seen ...\r\n ... @44:10) + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:130) + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:94) + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:563) + ... 32 more +Caused by: org.codehaus.plexus.util.xml.pull.XmlPullParserException: Duplicated tag: 'build' (position: START_TAG seen ...\r\n ... @44:10) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.checkFieldWithDuplicate(MavenXpp3Reader.java:114) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.parseModel(MavenXpp3Reader.java:2237) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.read(MavenXpp3Reader.java:3807) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.read(MavenXpp3Reader.java:557) + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:125) + ... 34 more +!SUBENTRY 1 org.eclipse.m2e.core 4 -1 2015-12-04 20:48:41.823 +!MESSAGE Could not read pom.xml +!STACK 0 +org.apache.maven.model.io.ModelParseException: Duplicated tag: 'build' (position: START_TAG seen ...\r\n ... @44:10) + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:130) + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:94) + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:563) + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:574) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refreshPhase2(ProjectRegistryManager.java:541) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:497) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:350) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:297) + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.getProjectFacade(MavenBuilder.java:154) + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod$1.call(MavenBuilder.java:89) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99) + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:86) + at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:200) + at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246) + at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:299) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:302) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:263) + at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:401) + at org.eclipse.core.internal.resources.Project$1.run(Project.java:618) + at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313) + at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597) + at org.eclipse.core.internal.resources.Project.build(Project.java:114) + at org.eclipse.jdt.internal.ui.jarpackager.JarFileExportOperation.buildProjects(JarFileExportOperation.java:1159) + at org.eclipse.jdt.internal.ui.jarpackager.JarFileExportOperation.singleRun(JarFileExportOperation.java:1006) + at org.eclipse.jdt.internal.ui.jarpackager.JarFileExportOperation.execute(JarFileExportOperation.java:987) + at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:106) + at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313) + at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:118) + at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122) +Caused by: org.codehaus.plexus.util.xml.pull.XmlPullParserException: Duplicated tag: 'build' (position: START_TAG seen ...\r\n ... @44:10) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.checkFieldWithDuplicate(MavenXpp3Reader.java:114) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.parseModel(MavenXpp3Reader.java:2237) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.read(MavenXpp3Reader.java:3807) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.read(MavenXpp3Reader.java:557) + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:125) + ... 34 more + +!ENTRY org.eclipse.m2e.logback.appender 4 0 2015-12-04 20:48:43.904 +!MESSAGE Could not read pom.xml +!STACK 1 +org.eclipse.core.runtime.CoreException: Could not read pom.xml + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:565) + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:574) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refreshPhase2(ProjectRegistryManager.java:541) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:497) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:350) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:297) + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.getProjectFacade(MavenBuilder.java:154) + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod$1.call(MavenBuilder.java:89) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99) + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:86) + at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:200) + at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246) + at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:299) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:302) + at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:358) + at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:381) + at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) + at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) +Caused by: org.apache.maven.model.io.ModelParseException: Duplicated tag: 'build' (position: START_TAG seen ...\r\n ... @44:10) + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:130) + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:94) + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:563) + ... 24 more +Caused by: org.codehaus.plexus.util.xml.pull.XmlPullParserException: Duplicated tag: 'build' (position: START_TAG seen ...\r\n ... @44:10) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.checkFieldWithDuplicate(MavenXpp3Reader.java:114) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.parseModel(MavenXpp3Reader.java:2237) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.read(MavenXpp3Reader.java:3807) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.read(MavenXpp3Reader.java:557) + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:125) + ... 26 more +!SUBENTRY 1 org.eclipse.m2e.core 4 -1 2015-12-04 20:48:43.904 +!MESSAGE Could not read pom.xml +!STACK 0 +org.apache.maven.model.io.ModelParseException: Duplicated tag: 'build' (position: START_TAG seen ...\r\n ... @44:10) + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:130) + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:94) + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:563) + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:574) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refreshPhase2(ProjectRegistryManager.java:541) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:497) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:350) + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:297) + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.getProjectFacade(MavenBuilder.java:154) + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod$1.call(MavenBuilder.java:89) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99) + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:86) + at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:200) + at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246) + at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:299) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:302) + at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:358) + at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:381) + at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) + at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) +Caused by: org.codehaus.plexus.util.xml.pull.XmlPullParserException: Duplicated tag: 'build' (position: START_TAG seen ...\r\n ... @44:10) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.checkFieldWithDuplicate(MavenXpp3Reader.java:114) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.parseModel(MavenXpp3Reader.java:2237) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.read(MavenXpp3Reader.java:3807) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.read(MavenXpp3Reader.java:557) + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:125) + ... 26 more + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:49:25.634 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:49:25.639 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:49:28.668 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:49:28.684 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:51:21.844 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:51:21.850 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:56:08.784 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:56:08.788 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:56:31.719 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:56:31.721 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:57:18.366 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:57:18.368 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:57:21.176 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:57:21.179 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:59:55.337 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 20:59:55.354 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:04:46.553 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:04:46.557 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:07:43.287 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:07:43.297 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:07:57.407 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:07:57.412 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:10:39.899 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:10:39.903 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:15:43.801 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:15:43.818 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:16:32.381 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:16:32.389 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:16:42.780 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:16:42.786 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 4 0 2015-12-04 21:20:39.443 +!MESSAGE Could not resolve artifact htmlcleaner:htmlcleaner:pom:2.16 +!STACK 1 +org.eclipse.core.runtime.CoreException: Could not resolve artifact htmlcleaner:htmlcleaner:pom:2.16 + at org.eclipse.m2e.core.internal.embedder.MavenImpl$5.call(MavenImpl.java:776) + at org.eclipse.m2e.core.internal.embedder.MavenImpl$5.call(MavenImpl.java:1) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99) + at org.eclipse.m2e.core.internal.embedder.MavenImpl.resolve(MavenImpl.java:743) + at org.eclipse.m2e.core.internal.embedder.MavenImpl.resolve(MavenImpl.java:720) + at org.eclipse.m2e.core.ui.internal.actions.OpenPomAction.openPomEditor(OpenPomAction.java:243) + at org.eclipse.m2e.core.ui.internal.actions.OpenPomAction.openEditor(OpenPomAction.java:218) + at org.eclipse.m2e.editor.xml.PomHyperlinkDetector$6$1.run(PomHyperlinkDetector.java:616) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) +Contains: Missing htmlcleaner:htmlcleaner:pom:2.16 +!SUBENTRY 1 org.eclipse.m2e.core 4 -1 2015-12-04 21:20:39.444 +!MESSAGE Could not resolve artifact htmlcleaner:htmlcleaner:pom:2.16 +!SUBENTRY 2 org.eclipse.m2e.core 4 -1 2015-12-04 21:20:39.444 +!MESSAGE Missing htmlcleaner:htmlcleaner:pom:2.16 + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:20:50.009 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:20:50.024 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:22:06.752 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:22:06.760 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:22:08.169 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:22:08.184 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.wst.sse.core 4 4 2015-12-04 21:22:49.039 +!MESSAGE Invalid thread access +!STACK 0 +org.eclipse.swt.SWTException: Invalid thread access + at org.eclipse.swt.SWT.error(SWT.java:4441) + at org.eclipse.swt.SWT.error(SWT.java:4356) + at org.eclipse.swt.SWT.error(SWT.java:4327) + at org.eclipse.swt.widgets.Widget.error(Widget.java:476) + at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:367) + at org.eclipse.swt.widgets.Table.setRedraw(Table.java:4784) + at org.eclipse.jface.viewers.AbstractTableViewer.inputChanged(AbstractTableViewer.java:562) + at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:292) + at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1675) + at org.eclipse.m2e.editor.composites.ListEditorComposite.setInput(ListEditorComposite.java:135) + at org.eclipse.m2e.editor.composites.DependenciesComposite.setDependenciesInput(DependenciesComposite.java:823) + at org.eclipse.m2e.editor.composites.DependenciesComposite.loadData(DependenciesComposite.java:588) + at org.eclipse.m2e.editor.pom.DependenciesPage.loadData(DependenciesPage.java:94) + at org.eclipse.m2e.editor.pom.MavenPomEditorPage$1.modelChanged(MavenPomEditorPage.java:137) + at org.eclipse.wst.sse.core.internal.model.AbstractStructuredModel.fireModelChanged(AbstractStructuredModel.java:526) + at org.eclipse.wst.sse.core.internal.model.AbstractStructuredModel.internalModelChanged(AbstractStructuredModel.java:837) + at org.eclipse.wst.sse.core.internal.model.AbstractStructuredModel.changedModel(AbstractStructuredModel.java:361) + at org.eclipse.wst.xml.core.internal.document.DOMModelImpl.changedModel(DOMModelImpl.java:171) + at org.eclipse.m2e.core.ui.internal.editing.PomEdits.performOnDOMDocument(PomEdits.java:518) + at org.eclipse.m2e.editor.dialogs.ManageDependenciesDialog$2.run(ManageDependenciesDialog.java:264) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:22:50.718 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:22:50.737 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:39:08.916 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:39:08.929 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:40:23.454 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:40:23.494 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:40:43.742 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:40:43.749 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:40:46.252 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:40:46.258 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:40:53.690 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:40:53.725 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:40:55.168 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:40:55.182 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:41:21.113 +!MESSAGE The POM for org.spigotmc:spigot-api:jar: is missing, no dependency information available + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:42:24.529 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:42:24.552 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:42:25.848 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:42:25.876 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:42:35.820 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:42:35.826 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:49:41.401 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:49:41.403 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:50:38.948 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:50:38.961 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:50:43.661 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:50:43.666 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:50:46.877 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:50:46.881 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:50:50.824 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:50:50.827 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:51:44.507 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:51:44.512 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:52:47.267 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:52:47.272 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:53:23.537 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:53:23.541 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:53:38.591 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:53:38.595 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:53:41.614 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:53:41.619 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:53:49.777 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:53:49.781 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:54:12.527 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:54:12.531 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:56:31.780 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:56:31.785 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:56:52.403 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:56:52.418 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:57:14.442 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:57:14.448 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:57:48.226 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:57:48.228 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:58:10.193 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 21:58:10.198 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:07:16.565 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:07:16.570 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:09:55.751 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:09:55.758 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:10:20.010 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:10:20.014 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:10:21.128 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:10:21.133 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:12:56.291 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:12:56.295 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:13:18.020 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:13:18.024 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:13:22.656 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:13:22.675 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:13:28.002 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:13:28.007 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:13:31.668 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:13:31.672 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:13:33.225 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:13:33.229 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:13:35.750 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:13:35.755 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:14:22.267 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:14:22.271 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:15:21.225 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:15:21.235 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! diff --git a/.metadata/.lock b/.metadata/.lock new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.log b/.metadata/.log new file mode 100644 index 0000000..de3929c --- /dev/null +++ b/.metadata/.log @@ -0,0 +1,1134 @@ +!SESSION 2015-12-04 19:16:01.190 ----------------------------------------------- +eclipse.buildId=4.4.2.M20150204-1700 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +This is a continuation of log file D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\.metadata\.bak_0.log +Created Time: 2015-12-04 22:17:52.296 + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:17:52.297 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:17:52.302 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:18:09.589 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:18:09.593 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:18:25.430 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:18:25.435 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:18:34.048 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:18:34.051 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:21:03.942 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:21:03.946 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:21:13.394 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:21:13.397 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:21:17.520 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:21:17.525 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:21:24.536 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:21:24.540 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:21:32.732 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:21:32.736 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:21:46.909 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:21:46.912 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:21:53.526 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:21:53.531 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:22:05.040 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:22:05.044 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:22:13.589 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:22:13.592 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:23:47.614 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:23:47.618 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:23:52.173 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:23:52.176 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:24:31.567 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:24:31.571 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:26:08.955 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:26:08.959 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:39:23.494 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:39:23.499 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:39:29.700 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:39:29.704 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:43:10.036 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:43:10.038 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:45:28.086 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:45:28.090 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:45:34.057 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:45:34.061 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:45:35.151 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 22:45:35.155 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:05:36.243 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:05:36.247 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:20:47.064 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:20:47.069 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +!SESSION 2015-12-04 23:25:13.351 ----------------------------------------------- +eclipse.buildId=4.4.2.M20150204-1700 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 23:25:59.102 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-04 23:25:59.103 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:30:12.749 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:30:12.777 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:30:40.382 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:30:40.399 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:43:18.904 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:43:18.906 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:45:57.784 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:45:57.790 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:47:06.633 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:47:06.639 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:47:43.260 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:47:43.266 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:47:56.933 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:47:56.937 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:48:07.312 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:48:07.317 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:48:10.334 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-04 23:48:10.339 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +!SESSION 2015-12-05 15:05:11.156 ----------------------------------------------- +eclipse.buildId=4.4.2.M20150204-1700 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-05 15:07:21.089 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-05 15:07:21.269 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:09:58.558 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:09:58.618 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:10:00.044 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:10:00.112 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:10:15.382 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:10:15.392 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:10:16.604 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:10:16.604 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:10:25.851 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:10:25.857 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:20:44.814 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:20:44.820 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:21:13.698 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:21:13.707 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:21:20.333 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:21:20.340 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:21:21.822 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:21:21.827 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:21:29.611 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:21:29.616 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:21:33.695 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:21:33.700 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:21:37.799 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:21:37.805 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:25:35.369 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:25:35.376 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:25:47.344 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:25:47.348 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:26:02.270 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 15:26:02.274 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +!SESSION 2015-12-05 22:28:08.641 ----------------------------------------------- +eclipse.buildId=4.4.2.M20150204-1700 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-05 22:40:31.273 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-05 22:40:31.530 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 22:47:48.059 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-05 22:47:48.356 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +!SESSION 2015-12-09 19:45:03.553 ----------------------------------------------- +eclipse.buildId=4.4.2.M20150204-1700 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-09 19:46:36.976 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-09 19:46:37.244 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2015-12-09 20:40:27.682 ----------------------------------------------- +eclipse.buildId=4.4.2.M20150204-1700 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-09 20:41:38.867 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-09 20:41:39.095 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-09 20:43:25.207 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-09 20:43:25.257 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-09 20:43:27.558 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-09 20:43:27.594 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-09 20:43:29.067 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-09 20:43:29.072 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +!SESSION 2015-12-12 19:04:11.053 ----------------------------------------------- +eclipse.buildId=4.4.2.M20150204-1700 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-12 19:08:05.944 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-12 19:08:06.083 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2015-12-18 22:41:48.612 ----------------------------------------------- +eclipse.buildId=4.4.2.M20150204-1700 +java.version=1.8.0_66 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US +Framework arguments: -product org.eclipse.epp.package.jee.product -product org.eclipse.epp.package.jee.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product -data D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin -product org.eclipse.epp.package.jee.product + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-18 22:42:33.583 +!MESSAGE Warning: EGit couldn't detect the installation path "gitPrefix" of native Git. Hence EGit can't respect system level +Git settings which might be configured in ${gitPrefix}/etc/gitconfig under the native Git installation directory. +The most important of these settings is core.autocrlf. Git for Windows by default sets this parameter to true in +this system level configuration. The Git installation location can be configured on the +Team > Git > Configuration preference page's 'System Settings' tab. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.ui 2 0 2015-12-18 22:42:33.610 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\Norbi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 22:47:51.439 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 22:47:51.501 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:15:29.651 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:15:29.662 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:16:46.383 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:16:46.389 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:18:04.390 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:18:04.429 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:39:23.142 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:39:23.196 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:39:31.232 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:39:31.239 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:39:45.705 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:39:45.710 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:40:20.361 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:40:20.365 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:40:21.500 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:40:21.504 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:42:09.154 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:42:09.159 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:42:15.455 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:42:15.459 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:42:17.057 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:42:17.062 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:42:34.857 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:42:34.862 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:42:37.056 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-18 23:42:37.061 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:13:44.576 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:13:44.592 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:13:49.490 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:13:49.506 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:15:22.930 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:15:22.930 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:15:26.446 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:15:26.462 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:15:50.762 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:15:50.778 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:16:29.381 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:16:29.381 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:17:40.556 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:17:40.556 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:18:18.610 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:18:18.610 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:18:20.172 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:18:20.172 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:18:30.770 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:18:30.770 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:19:45.890 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:19:45.890 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:20:58.882 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:20:58.897 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:31:13.566 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:31:13.566 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:33:35.254 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:33:35.254 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:34:07.890 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:34:07.890 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:34:35.365 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:34:35.365 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:34:39.826 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:34:39.826 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:36:20.441 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:36:20.456 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:37:39.000 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:37:39.004 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:38:11.294 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:38:11.301 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:38:24.122 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:38:24.126 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:38:48.499 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:38:48.503 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:39:01.033 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:39:01.037 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:40:34.660 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:40:34.664 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:40:51.077 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:40:51.081 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:40:57.295 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:40:57.299 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:41:23.315 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:41:23.320 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:41:26.102 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 12:41:26.107 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:09:02.195 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:09:02.200 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:09:26.128 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:09:26.138 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:09:52.697 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:09:52.702 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:09:56.989 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:09:56.993 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:10:19.664 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:10:19.669 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:10:41.065 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:10:41.070 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:11:05.901 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:11:05.905 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:11:09.396 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:11:09.401 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:11:34.221 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:11:34.225 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:11:38.178 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:11:38.182 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:11:39.586 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:11:39.591 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:12:08.072 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:12:08.075 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:12:34.487 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:12:34.490 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:12:35.584 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:12:35.588 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:12:54.763 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:12:54.767 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:13:03.352 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:13:03.357 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:13:10.419 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:13:10.423 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:13:40.495 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:13:40.499 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:13:59.645 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:13:59.649 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:14:26.373 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:14:26.377 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:17:34.301 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:17:34.306 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:18:12.377 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:18:12.382 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:18:23.999 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:18:24.003 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:22:31.352 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:22:31.357 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:22:32.703 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:22:32.706 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.jdt.core 4 4 2015-12-19 13:22:41.910 +!MESSAGE JavaBuilder handling CoreException +!STACK 1 +org.eclipse.core.runtime.CoreException: Could not write file: D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\target\classes\tk\sznp\thebuttonautoflair\Commands$2.class. + at org.eclipse.core.internal.filesystem.Policy.error(Policy.java:55) + at org.eclipse.core.internal.filesystem.local.LocalFile.openOutputStream(LocalFile.java:406) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.write(FileSystemResourceManager.java:1101) + at org.eclipse.core.internal.resources.File.internalSetContents(File.java:322) + at org.eclipse.core.internal.resources.File.setContents(File.java:361) + at org.eclipse.core.internal.resources.File.setContents(File.java:465) + at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.writeClassFileContents(IncrementalImageBuilder.java:836) + at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.writeClassFile(AbstractImageBuilder.java:859) + at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.acceptResult(AbstractImageBuilder.java:190) + at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:510) + at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:367) + at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.compile(IncrementalImageBuilder.java:330) + at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:304) + at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:135) + at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:267) + at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:195) + at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246) + at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:299) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:302) + at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:358) + at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:381) + at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) + at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) +Caused by: java.io.FileNotFoundException: D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\target\classes\tk\sznp\thebuttonautoflair\Commands$2.class (The process cannot access the file because it is being used by another process) + at java.io.FileOutputStream.open0(Native Method) + at java.io.FileOutputStream.open(Unknown Source) + at java.io.FileOutputStream.(Unknown Source) + at org.eclipse.core.internal.filesystem.local.LocalFile.openOutputStream(LocalFile.java:397) + ... 26 more +!SUBENTRY 1 org.eclipse.core.filesystem 4 272 2015-12-19 13:22:42.073 +!MESSAGE Could not write file: D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\target\classes\tk\sznp\thebuttonautoflair\Commands$2.class. +!STACK 0 +java.io.FileNotFoundException: D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\target\classes\tk\sznp\thebuttonautoflair\Commands$2.class (The process cannot access the file because it is being used by another process) + at java.io.FileOutputStream.open0(Native Method) + at java.io.FileOutputStream.open(Unknown Source) + at java.io.FileOutputStream.(Unknown Source) + at org.eclipse.core.internal.filesystem.local.LocalFile.openOutputStream(LocalFile.java:397) + at org.eclipse.core.internal.localstore.FileSystemResourceManager.write(FileSystemResourceManager.java:1101) + at org.eclipse.core.internal.resources.File.internalSetContents(File.java:322) + at org.eclipse.core.internal.resources.File.setContents(File.java:361) + at org.eclipse.core.internal.resources.File.setContents(File.java:465) + at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.writeClassFileContents(IncrementalImageBuilder.java:836) + at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.writeClassFile(AbstractImageBuilder.java:859) + at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.acceptResult(AbstractImageBuilder.java:190) + at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:510) + at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:367) + at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.compile(IncrementalImageBuilder.java:330) + at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:304) + at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:135) + at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:267) + at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:195) + at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246) + at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:299) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:302) + at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:358) + at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:381) + at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) + at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) + +!ENTRY org.eclipse.jdt.core 4 4 2015-12-19 13:22:42.159 +!MESSAGE JavaBuilder handling ImageBuilderInternalException while building: TheButtonAutoFlair +!STACK 1 +org.eclipse.core.internal.resources.ResourceException: Problems encountered while deleting resources. + at org.eclipse.core.internal.resources.Resource.delete(Resource.java:816) + at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.removeClassFile(IncrementalImageBuilder.java:758) + at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.removeSecondaryTypes(IncrementalImageBuilder.java:771) + at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:136) + at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:267) + at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:195) + at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246) + at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:299) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:302) + at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:358) + at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:381) + at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) + at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) +Contains: Could not delete 'D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\target\classes\tk\sznp\thebuttonautoflair\Commands$2.class'. +org.eclipse.core.runtime.CoreException: Problems encountered while deleting files. + at org.eclipse.core.internal.filesystem.local.LocalFile.delete(LocalFile.java:131) + at org.eclipse.core.internal.resources.ResourceTree.internalDeleteFile(ResourceTree.java:304) + at org.eclipse.core.internal.resources.ResourceTree.standardDeleteFile(ResourceTree.java:785) + at org.eclipse.core.internal.resources.Resource.unprotectedDelete(Resource.java:1979) + at org.eclipse.core.internal.resources.Resource.delete(Resource.java:803) + at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.removeClassFile(IncrementalImageBuilder.java:758) + at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.removeSecondaryTypes(IncrementalImageBuilder.java:771) + at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:136) + at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:267) + at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:195) + at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246) + at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:299) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:302) + at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:358) + at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:381) + at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) + at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) +Contains: Could not delete: D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\target\classes\tk\sznp\thebuttonautoflair\Commands$2.class. +!SUBENTRY 1 org.eclipse.core.resources 4 273 2015-12-19 13:22:42.160 +!MESSAGE Problems encountered while deleting resources. +!SUBENTRY 2 org.eclipse.core.resources 4 273 2015-12-19 13:22:42.160 +!MESSAGE Could not delete 'D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\target\classes\tk\sznp\thebuttonautoflair\Commands$2.class'. +!STACK 1 +org.eclipse.core.runtime.CoreException: Problems encountered while deleting files. + at org.eclipse.core.internal.filesystem.local.LocalFile.delete(LocalFile.java:131) + at org.eclipse.core.internal.resources.ResourceTree.internalDeleteFile(ResourceTree.java:304) + at org.eclipse.core.internal.resources.ResourceTree.standardDeleteFile(ResourceTree.java:785) + at org.eclipse.core.internal.resources.Resource.unprotectedDelete(Resource.java:1979) + at org.eclipse.core.internal.resources.Resource.delete(Resource.java:803) + at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.removeClassFile(IncrementalImageBuilder.java:758) + at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.removeSecondaryTypes(IncrementalImageBuilder.java:771) + at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:136) + at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:267) + at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:195) + at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246) + at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:299) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:302) + at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:358) + at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:381) + at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) + at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) +Contains: Could not delete: D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\target\classes\tk\sznp\thebuttonautoflair\Commands$2.class. +!SUBENTRY 3 org.eclipse.core.filesystem 4 273 2015-12-19 13:22:42.160 +!MESSAGE Problems encountered while deleting files. +!SUBENTRY 4 org.eclipse.core.filesystem 4 273 2015-12-19 13:22:42.160 +!MESSAGE Could not delete: D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\target\classes\tk\sznp\thebuttonautoflair\Commands$2.class. + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:22:42.166 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:22:42.170 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:22:48.431 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:22:48.437 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:22:59.183 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:22:59.186 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:23:12.683 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:23:12.687 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:27:22.358 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:27:22.362 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:28:23.756 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:28:23.760 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:29:10.484 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:29:10.488 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:29:23.446 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:29:23.449 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:29:32.163 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:29:32.167 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:29:36.305 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:29:36.308 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:29:38.423 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:29:38.427 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:29:43.697 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:29:43.701 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:30:49.811 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:30:49.814 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:33:56.803 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:33:56.808 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:34:07.750 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:34:07.754 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:35:30.537 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! + +!ENTRY org.eclipse.m2e.logback.appender 2 0 2015-12-19 13:35:30.541 +!MESSAGE Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! diff --git a/.metadata/.mylyn/.taskListIndex/segments.gen b/.metadata/.mylyn/.taskListIndex/segments.gen new file mode 100644 index 0000000..63a7ec9 Binary files /dev/null and b/.metadata/.mylyn/.taskListIndex/segments.gen differ diff --git a/.metadata/.mylyn/.taskListIndex/segments_1 b/.metadata/.mylyn/.taskListIndex/segments_1 new file mode 100644 index 0000000..de74fdf Binary files /dev/null and b/.metadata/.mylyn/.taskListIndex/segments_1 differ diff --git a/.metadata/.mylyn/.tasks.xml.zip b/.metadata/.mylyn/.tasks.xml.zip new file mode 100644 index 0000000..29f663e Binary files /dev/null and b/.metadata/.mylyn/.tasks.xml.zip differ diff --git a/.metadata/.mylyn/repositories.xml.zip b/.metadata/.mylyn/repositories.xml.zip new file mode 100644 index 0000000..d205b35 Binary files /dev/null and b/.metadata/.mylyn/repositories.xml.zip differ diff --git a/.metadata/.mylyn/tasks.xml.zip b/.metadata/.mylyn/tasks.xml.zip new file mode 100644 index 0000000..318f663 Binary files /dev/null and b/.metadata/.mylyn/tasks.xml.zip differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1/a0191b15d23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/1/a0191b15d23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..85f16ce --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1/a0191b15d23e001518fa86d7ae2a1cf8 @@ -0,0 +1,374 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { + System.out.println("Auto-flair plugin cleanup for reloading..."); //2015.08.09. + MaybeOfflinePlayer.AllPlayers.clear(); //2015.08.09. + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1/b070e46d45a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/1/b070e46d45a600151c15ab42d7919fee new file mode 100644 index 0000000..2c44dad --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1/b070e46d45a600151c15ab42d7919fee @@ -0,0 +1,116 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(short color) { + FlairColor = color; + SetFlair2(); + } + + public void SetFlairTime(String time) { + FlairTime = time; + SetFlair2(); + } + + public void SetFlair(short color, String time) { + FlairColor = color; + FlairTime = time; + SetFlair2(); + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + Player p=Bukkit.getPlayer(UUID); + p.setPlayerListName(String.Format("%s%s", )); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/10/20fd03d549a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/10/20fd03d549a600151c15ab42d7919fee new file mode 100644 index 0000000..7d75246 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/10/20fd03d549a600151c15ab42d7919fee @@ -0,0 +1,355 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.IOUtils; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.htmlcleaner.HtmlCleaner; +import org.htmlcleaner.TagNode; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.*; +import java.lang.String; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLConnection; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.TimeZone; + +public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15. + // A user, which flair isn't obtainable: + // https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + public static PluginMain Instance; + public static ConsoleCommandSender Console; // 2015.08.12. + + // Fired when plugin is first enabled + @Override + public void onEnable() { + try { + System.out.println("Extracting necessary libraries..."); + final File[] libs = new File[] { new File(getDataFolder(), + "htmlcleaner-2.16.jar") }; + for (final File lib : libs) { + if (!lib.exists()) { + JarUtils.extractFromJar(lib.getName(), + lib.getAbsolutePath()); + } + } + for (final File lib : libs) { + if (!lib.exists()) { + getLogger().warning( + "Failed to load plugin! Could not find lib: " + + lib.getName()); + Bukkit.getServer().getPluginManager().disablePlugin(this); + return; + } + addClassPath(JarUtils.getJarUrl(lib)); + } + } catch (final Exception e) { + e.printStackTrace(); + } + + getServer().getPluginManager().registerEvents(new PlayerListener(), + this); + Commands comm = new Commands(); + this.getCommand("u").setExecutor(comm); + this.getCommand("u").setUsage( + this.getCommand("u").getUsage().replace('&', '§')); + this.getCommand("nrp").setExecutor(comm); + this.getCommand("nrp").setUsage( + this.getCommand("nrp").getUsage().replace('&', '§')); + this.getCommand("ooc").setExecutor(comm); + this.getCommand("ooc").setUsage( + this.getCommand("ooc").getUsage().replace('&', '§')); + Instance = this; // 2015.08.08. + Console = this.getServer().getConsoleSender(); // 2015.08.12. + LoadFiles(false); // 2015.08.09. + Runnable r = new Runnable() { + public void run() { + ThreadMethod(); + } + }; + Thread t = new Thread(r); + t.start(); + r = new Runnable() { + public void run() { + AnnouncerThread.Run(); + } + }; + t = new Thread(r); + t.start(); + } + + public Boolean stop = false; + + // Fired when plugin is disabled + @Override + public void onDisable() { + SaveFiles(); // 2015.08.09. + stop = true; + } + + private void ThreadMethod() { + while (!stop) { + try { + String body = DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json = new JSONArray(body).getJSONObject(1) + .getJSONObject("data").getJSONArray("children"); + for (Object obj : json) { + JSONObject item = (JSONObject) obj; + String author = item.getJSONObject("data").getString( + "author"); + String ign = item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + if (start == -1 + "IGN:".length()) // +length: 2015.08.10. + continue; // 2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end = ign.indexOf('\n', start); // 2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.GetFromName(ign); + if (mp == null) + continue; + if (!mp.UserNames.contains(author)) + mp.UserNames.add(author); + if (mp.FlairState.equals(FlairStates.NoComment)) { + mp.FlairState = FlairStates.Commented; + ConfirmUserMessage(mp); + } + try { + Thread.sleep(10); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } + try { + Thread.sleep(10000); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + // System.out.println("Error!\n" + e); + LastException = e; // 2015.08.09. + } + } + } + + public void DownloadFlair(MaybeOfflinePlayer mp) + throws MalformedURLException, IOException { + String[] flairdata = DownloadString( + "http://karmadecay.com/thebutton-data.php?users=" + mp.UserName) + .replace("\"", "").split(":"); + String flair; + if (flairdata.length > 1) + flair = flairdata[1]; + else + flair = ""; + String flairclass; + if (flairdata.length > 2) + flairclass = flairdata[2]; + else + flairclass = "unknown"; + SetFlair(mp, flair, flairclass, mp.UserName); + } + + public static Exception LastException; // 2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, + IOException { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + private void SetFlair(MaybeOfflinePlayer p, String text, String flairclass, + String username) { + p.UserName = username; + p.FlairState = FlairStates.Recognised; + switch (flairclass) { + case "press-1": + p.SetFlairColor(0xc); + break; + case "press-2": + p.SetFlairColor(0x6); + break; + case "press-3": + p.SetFlairColor(0xe); + break; + case "press-4": + p.SetFlairColor(0xa); + break; + case "press-5": + p.SetFlairColor(0x9); + break; + case "press-6": + p.SetFlairColor(0x5); + break; + case "no-press": + p.SetFlairColor(0x7); + break; + case "cheater": + p.SetFlairColor(0x5); + break; + case "cant-press": + p.SetFlairColor(0xf); + break; + case "unknown": + if (text.equals("-1")) // If true, only non-presser/can't press; if + // false, any flair + { + try { + if (CheckForJoinDate(p)) { + p.SetFlairColor(0x7); + p.SetFlairTime("--"); + } else { + p.FlairColor = 0xf; + p.FlairTime = "--"; + } + } catch (Exception e) { + p.FlairState = FlairStates.Commented; // Flair unknown + p.FlairColor = 0; + e.printStackTrace(); + } + } else { + p.FlairState = FlairStates.Commented; // Flair unknown + p.FlairColor = 0; + } + return; + default: + return; + } + if (text.equals("-1")) + text = "--"; + p.FlairTime = text; + } + + public static boolean CheckForJoinDate(MaybeOfflinePlayer mp) + throws Exception { + URL url = new URL("https://www.reddit.com/u/" + mp.UserName); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + HtmlCleaner cleaner = new HtmlCleaner(); + TagNode node = cleaner.clean(in); + + node = node.getElementsByAttValue("class", "age", true, true)[0]; + node = node.getElementsByName("time", false)[0]; + String joindate = node.getAttributeByName("datetime"); + SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd"); + joindate = joindate.split("T")[0]; + Date date = parserSDF.parse(joindate); + return date.before(new Calendar.Builder() + .setTimeZone(TimeZone.getTimeZone("UTC")).setDate(2015, 4, 1) + .build().getTime()); + } + + public static void ConfirmUserMessage(MaybeOfflinePlayer mp) { + Player p = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented) && p != null) + if (mp.UserNames.size() > 1) + p.sendMessage("§9Multiple Reddit users commented your name. You can select with /u accept.§r §6Type /u accept or /u ignore§r"); + else + p.sendMessage("§9A Reddit user commented your name. Is that you?§r §6Type /u accept or /u ignore§r"); + } + + public static Collection GetPlayers() { + return Instance.getServer().getOnlinePlayers(); + } + + public static ArrayList AnnounceMessages = new ArrayList<>(); + public static int AnnounceTime = 15 * 60 * 1000; + + public static void LoadFiles(boolean reload) { + if (reload) { + System.out + .println("The Button Minecraft plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + AnnounceMessages.clear(); + } + System.out.println("Loading files for The Button Minecraft plugin..."); + try { + File file = new File("announcemessages.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsaccepted.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsignored.txt"); + if (file.exists()) + file.delete(); + file = new File("thebuttonmc.yml"); + if (file.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + yc.load(file); + MaybeOfflinePlayer.Load(yc); + PlayerListener.NotificationSound = yc + .getString("notificationsound"); + PlayerListener.NotificationPitch = yc + .getDouble("notificationpitch"); + AnnounceTime = yc.getInt("announcetime"); + AnnounceMessages.addAll(yc.getStringList("announcements")); + } + System.out.println("The Button Minecraft plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } catch (InvalidConfigurationException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + public static void SaveFiles() { + System.out.println("Saving files for The Button Minecraft plugin..."); + try { + File file = new File("thebuttonmc.yml"); + YamlConfiguration yc = new YamlConfiguration(); + MaybeOfflinePlayer.Save(yc); + yc.set("notificationsound", PlayerListener.NotificationSound); + yc.set("notificationpitch", PlayerListener.NotificationPitch); + yc.set("announcetime", AnnounceTime); + yc.set("announcements", AnnounceMessages); + yc.save(file); + System.out.println("The Button Minecraft plugin saved files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + private void addClassPath(final URL url) throws IOException { + final URLClassLoader sysloader = (URLClassLoader) ClassLoader + .getSystemClassLoader(); + final Class sysclass = URLClassLoader.class; + try { + final Method method = sysclass.getDeclaredMethod("addURL", + new Class[] { URL.class }); + method.setAccessible(true); + method.invoke(sysloader, new Object[] { url }); + } catch (final Throwable t) { + t.printStackTrace(); + throw new IOException("Error adding " + url + + " to system classloader"); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/10/302feacd41a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/10/302feacd41a600151c15ab42d7919fee new file mode 100644 index 0000000..5810a0c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/10/302feacd41a600151c15ab42d7919fee @@ -0,0 +1,603 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + Player p = null; + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/12/a077bfc949a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/12/a077bfc949a600151c15ab42d7919fee new file mode 100644 index 0000000..d3a7015 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/12/a077bfc949a600151c15ab42d7919fee @@ -0,0 +1,125 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(int color) { + FlairColor = (short) color; + SetFlair2(); + } + + public void SetFlairTime(String time) { + FlairTime = time; + SetFlair2(); + } + + public void SetFlair(int color, String time) { + FlairColor = (short)color; + FlairTime = time; + SetFlair2(); + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + Player p = Bukkit.getPlayer(UUID); + p.setPlayerListName(String.format("%s%s", p.getPlayerListName(), + GetFormattedFlair())); + } + + public short GetFlairColor() { + return FlairColor; + } + + public String GetFlairTime() { + return FlairTime; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/12/b09714c2cf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/12/b09714c2cf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..206b53a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/12/b09714c2cf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,362 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + player.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/13/b0a0fbb849a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/13/b0a0fbb849a600151c15ab42d7919fee new file mode 100644 index 0000000..88e0af8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/13/b0a0fbb849a600151c15ab42d7919fee @@ -0,0 +1,355 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.IOUtils; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.htmlcleaner.HtmlCleaner; +import org.htmlcleaner.TagNode; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.*; +import java.lang.String; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLConnection; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.TimeZone; + +public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15. + // A user, which flair isn't obtainable: + // https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + public static PluginMain Instance; + public static ConsoleCommandSender Console; // 2015.08.12. + + // Fired when plugin is first enabled + @Override + public void onEnable() { + try { + System.out.println("Extracting necessary libraries..."); + final File[] libs = new File[] { new File(getDataFolder(), + "htmlcleaner-2.16.jar") }; + for (final File lib : libs) { + if (!lib.exists()) { + JarUtils.extractFromJar(lib.getName(), + lib.getAbsolutePath()); + } + } + for (final File lib : libs) { + if (!lib.exists()) { + getLogger().warning( + "Failed to load plugin! Could not find lib: " + + lib.getName()); + Bukkit.getServer().getPluginManager().disablePlugin(this); + return; + } + addClassPath(JarUtils.getJarUrl(lib)); + } + } catch (final Exception e) { + e.printStackTrace(); + } + + getServer().getPluginManager().registerEvents(new PlayerListener(), + this); + Commands comm = new Commands(); + this.getCommand("u").setExecutor(comm); + this.getCommand("u").setUsage( + this.getCommand("u").getUsage().replace('&', '§')); + this.getCommand("nrp").setExecutor(comm); + this.getCommand("nrp").setUsage( + this.getCommand("nrp").getUsage().replace('&', '§')); + this.getCommand("ooc").setExecutor(comm); + this.getCommand("ooc").setUsage( + this.getCommand("ooc").getUsage().replace('&', '§')); + Instance = this; // 2015.08.08. + Console = this.getServer().getConsoleSender(); // 2015.08.12. + LoadFiles(false); // 2015.08.09. + Runnable r = new Runnable() { + public void run() { + ThreadMethod(); + } + }; + Thread t = new Thread(r); + t.start(); + r = new Runnable() { + public void run() { + AnnouncerThread.Run(); + } + }; + t = new Thread(r); + t.start(); + } + + public Boolean stop = false; + + // Fired when plugin is disabled + @Override + public void onDisable() { + SaveFiles(); // 2015.08.09. + stop = true; + } + + private void ThreadMethod() { + while (!stop) { + try { + String body = DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json = new JSONArray(body).getJSONObject(1) + .getJSONObject("data").getJSONArray("children"); + for (Object obj : json) { + JSONObject item = (JSONObject) obj; + String author = item.getJSONObject("data").getString( + "author"); + String ign = item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + if (start == -1 + "IGN:".length()) // +length: 2015.08.10. + continue; // 2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end = ign.indexOf('\n', start); // 2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.GetFromName(ign); + if (mp == null) + continue; + if (!mp.UserNames.contains(author)) + mp.UserNames.add(author); + if (mp.FlairState.equals(FlairStates.NoComment)) { + mp.FlairState = FlairStates.Commented; + ConfirmUserMessage(mp); + } + try { + Thread.sleep(10); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } + try { + Thread.sleep(10000); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + // System.out.println("Error!\n" + e); + LastException = e; // 2015.08.09. + } + } + } + + public void DownloadFlair(MaybeOfflinePlayer mp) + throws MalformedURLException, IOException { + String[] flairdata = DownloadString( + "http://karmadecay.com/thebutton-data.php?users=" + mp.UserName) + .replace("\"", "").split(":"); + String flair; + if (flairdata.length > 1) + flair = flairdata[1]; + else + flair = ""; + String flairclass; + if (flairdata.length > 2) + flairclass = flairdata[2]; + else + flairclass = "unknown"; + SetFlair(mp, flair, flairclass, mp.UserName); + } + + public static Exception LastException; // 2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, + IOException { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + private void SetFlair(MaybeOfflinePlayer p, String text, String flairclass, + String username) { + p.UserName = username; + p.FlairState = FlairStates.Recognised; + switch (flairclass) { + case "press-1": + p.SetFlairColor(0xc); + break; + case "press-2": + p.SetFlairColor(0x6); + break; + case "press-3": + p.SetFlairColor(0xe); + break; + case "press-4": + p.SetFlairColor(0xa); + break; + case "press-5": + p.SetFlairColor(0x9); + break; + case "press-6": + p.SetFlairColor(0x5); + break; + case "no-press": + p.SetFlairColor(0x7); + break; + case "cheater": + p.SetFlairColor(0x5); + break; + case "cant-press": + p.SetFlairColor(0xf); + break; + case "unknown": + if (text.equals("-1")) // If true, only non-presser/can't press; if + // false, any flair + { + try { + if (CheckForJoinDate(p)) { + p.FlairColor = 0x7; + p.FlairTime = "--"; + } else { + p.FlairColor = 0xf; + p.FlairTime = "--"; + } + } catch (Exception e) { + p.FlairState = FlairStates.Commented; // Flair unknown + p.FlairColor = 0; + e.printStackTrace(); + } + } else { + p.FlairState = FlairStates.Commented; // Flair unknown + p.FlairColor = 0; + } + return; + default: + return; + } + if (text.equals("-1")) + text = "--"; + p.FlairTime = text; + } + + public static boolean CheckForJoinDate(MaybeOfflinePlayer mp) + throws Exception { + URL url = new URL("https://www.reddit.com/u/" + mp.UserName); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + HtmlCleaner cleaner = new HtmlCleaner(); + TagNode node = cleaner.clean(in); + + node = node.getElementsByAttValue("class", "age", true, true)[0]; + node = node.getElementsByName("time", false)[0]; + String joindate = node.getAttributeByName("datetime"); + SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd"); + joindate = joindate.split("T")[0]; + Date date = parserSDF.parse(joindate); + return date.before(new Calendar.Builder() + .setTimeZone(TimeZone.getTimeZone("UTC")).setDate(2015, 4, 1) + .build().getTime()); + } + + public static void ConfirmUserMessage(MaybeOfflinePlayer mp) { + Player p = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented) && p != null) + if (mp.UserNames.size() > 1) + p.sendMessage("§9Multiple Reddit users commented your name. You can select with /u accept.§r §6Type /u accept or /u ignore§r"); + else + p.sendMessage("§9A Reddit user commented your name. Is that you?§r §6Type /u accept or /u ignore§r"); + } + + public static Collection GetPlayers() { + return Instance.getServer().getOnlinePlayers(); + } + + public static ArrayList AnnounceMessages = new ArrayList<>(); + public static int AnnounceTime = 15 * 60 * 1000; + + public static void LoadFiles(boolean reload) { + if (reload) { + System.out + .println("The Button Minecraft plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + AnnounceMessages.clear(); + } + System.out.println("Loading files for The Button Minecraft plugin..."); + try { + File file = new File("announcemessages.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsaccepted.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsignored.txt"); + if (file.exists()) + file.delete(); + file = new File("thebuttonmc.yml"); + if (file.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + yc.load(file); + MaybeOfflinePlayer.Load(yc); + PlayerListener.NotificationSound = yc + .getString("notificationsound"); + PlayerListener.NotificationPitch = yc + .getDouble("notificationpitch"); + AnnounceTime = yc.getInt("announcetime"); + AnnounceMessages.addAll(yc.getStringList("announcements")); + } + System.out.println("The Button Minecraft plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } catch (InvalidConfigurationException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + public static void SaveFiles() { + System.out.println("Saving files for The Button Minecraft plugin..."); + try { + File file = new File("thebuttonmc.yml"); + YamlConfiguration yc = new YamlConfiguration(); + MaybeOfflinePlayer.Save(yc); + yc.set("notificationsound", PlayerListener.NotificationSound); + yc.set("notificationpitch", PlayerListener.NotificationPitch); + yc.set("announcetime", AnnounceTime); + yc.set("announcements", AnnounceMessages); + yc.save(file); + System.out.println("The Button Minecraft plugin saved files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + private void addClassPath(final URL url) throws IOException { + final URLClassLoader sysloader = (URLClassLoader) ClassLoader + .getSystemClassLoader(); + final Class sysclass = URLClassLoader.class; + try { + final Method method = sysclass.getDeclaredMethod("addURL", + new Class[] { URL.class }); + method.setAccessible(true); + method.invoke(sysloader, new Object[] { url }); + } catch (final Throwable t) { + t.printStackTrace(); + throw new IOException("Error adding " + url + + " to system classloader"); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/14/20b7f4c2d23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/14/20b7f4c2d23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..5cf5c6e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/14/20b7f4c2d23e001518fa86d7ae2a1cf8 @@ -0,0 +1,215 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true; + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Reloaded all files.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/15/a0689143d43e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/15/a0689143d43e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..b72f226 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/15/a0689143d43e001518fa86d7ae2a1cf8 @@ -0,0 +1,221 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§6Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done."); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + case "confirm": + DoReload(player); //2015.08.09. + break; + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/16/303c161945a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/16/303c161945a600151c15ab42d7919fee new file mode 100644 index 0000000..ed76b86 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/16/303c161945a600151c15ab42d7919fee @@ -0,0 +1,110 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(short color) { + FlairColor = color; + } + + public void SetFlairTime(String time) { + FlairTime = time; + } + + public void SetFlair(short color, String time) { + FlairColor = color; + FlairTime = time; + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + event.getPlayer().setPlayerListName(""); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/17/70f2199141a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/17/70f2199141a600151c15ab42d7919fee new file mode 100644 index 0000000..01ff1c5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/17/70f2199141a600151c15ab42d7919fee @@ -0,0 +1,597 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + Player p=null; + if(Lastlol!=null || Bukkit.getPlayer(Lastlol.UUID)) + Lastlol.UUID + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/19/c0e42302ce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/19/c0e42302ce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..84912b7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/19/c0e42302ce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,354 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + String finalflair; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": + finalflair=""; //2015.08.09. + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + public static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1a/c0bedf60e640001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/1a/c0bedf60e640001514c09dece48b36c7 new file mode 100644 index 0000000..bc3d453 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1a/c0bedf60e640001514c09dece48b36c7 @@ -0,0 +1,73 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + p.playSound(p.getLocation(), Sound.ORB_PICKUP, arg2, arg3) + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1c/50b35f3bd23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/1c/50b35f3bd23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..f15dd12 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1c/50b35f3bd23e001518fa86d7ae2a1cf8 @@ -0,0 +1,376 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + System.out.println("Auto-flair plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1c/a0ecf93ad23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/1c/a0ecf93ad23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..f15dd12 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1c/a0ecf93ad23e001518fa86d7ae2a1cf8 @@ -0,0 +1,376 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + System.out.println("Auto-flair plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1d/709a3bde2d53001516cdaaef55e27ba4 b/.metadata/.plugins/org.eclipse.core.resources/.history/1d/709a3bde2d53001516cdaaef55e27ba4 new file mode 100644 index 0000000..dcd717b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1d/709a3bde2d53001516cdaaef55e27ba4 @@ -0,0 +1,15 @@ +name: TheButtonMCPlugin +main: tk.sznp.thebuttonautoflair.PluginMain +version: 2.0 +commands: + u: + description: Auto-flair system. Accept or ignore flair. + usage: "&cUsage: /u accept|ignore|opme&r" + nrp: + description: Send message in Out-of-Character + usage: "&cUsage: /nrp &r" + ooc: + description: Send message in Out-of-Character + usage: "&cUsage: /ooc &r" +author: NorbiPeti +depend: [Essentials, Towny] \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1e/20ce3447d43e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/20ce3447d43e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..869953e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/20ce3447d43e001518fa86d7ae2a1cf8 @@ -0,0 +1,224 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§6Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done."); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + case "confirm": + if(ReloadPlayer.equals(player)) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1e/606a09eede40001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/606a09eede40001514c09dece48b36c7 new file mode 100644 index 0000000..d1dda6d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/606a09eede40001514c09dece48b36c7 @@ -0,0 +1,297 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§6Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§6Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§6The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1e/a0477e13d43e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/a0477e13d43e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..f26d723 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/a0477e13d43e001518fa86d7ae2a1cf8 @@ -0,0 +1,220 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + SendMessage(player, "§6Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done."); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + case "confirm": + DoReload(player); //2015.08.09. + break; + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1e/b057e861ce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/b057e861ce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..4343f31 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/b057e861ce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,31 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.HashMap; + +public class MaybeOfflinePlayer +{ //2015.08.08. + public String PlayerName; + public String UserName; + public String Flair; //If the user comments their name, it gets set, it doesn't matter if they accepted it or not + public boolean AcceptedFlair; + public boolean IgnoredFlair; + public FlairClassType FlairType; //2015.08.09. + public static HashMap AllPlayers=new HashMap<>(); //2015.08.08. + public static MaybeOfflinePlayer AddPlayerIfNeeded(String playername) + { + if(!AllPlayers.containsKey(playername)) + { + MaybeOfflinePlayer player=new MaybeOfflinePlayer(); + player.PlayerName=playername; + AllPlayers.put(playername, player); + return player; + } + return AllPlayers.get(playername); + } + /*public enum FlairClassType + { //2015.08.09. + NonPresser, + CantPress, + Undecided + }*/ +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1e/d0e4168be540001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/d0e4168be540001514c09dece48b36c7 new file mode 100644 index 0000000..8742a9c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1e/d0e4168be540001514c09dece48b36c7 @@ -0,0 +1,71 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/1f/203f7772d23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/1f/203f7772d23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..efbed4c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/1f/203f7772d23e001518fa86d7ae2a1cf8 @@ -0,0 +1,380 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + System.out.println("Auto-flair plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + public static void SaveFiles() //<-- 2015.08.09. + { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2/008fa000f34500151ebce83b3129f79d b/.metadata/.plugins/org.eclipse.core.resources/.history/2/008fa000f34500151ebce83b3129f79d new file mode 100644 index 0000000..9f10d95 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2/008fa000f34500151ebce83b3129f79d @@ -0,0 +1,78 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + public static String NotificationSound; //2015.08.14. + public static float NotificationPitch; //2015.08.14. + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + String color=""; //2015.08.17. + if(message.contains(p.getName())) + { + if(NotificationSound==null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); //2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, NotificationPitch); //2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.17. + color=mp.Flair.substring(0, 2); + } + message = message.replaceAll(p.getName(), color+p.getName()+"§r"); + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + Object handle = Reflection.getHandle(player); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2/20385cfb44a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/2/20385cfb44a600151c15ab42d7919fee new file mode 100644 index 0000000..6cc330d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2/20385cfb44a600151c15ab42d7919fee @@ -0,0 +1,106 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(short color) + { + } + + public void SetFlairTime(String time) + { + + } + + public void SetFlair(short color, String time) + + //Flairs from Command Block The Button - Teams + //PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + event.getPlayer().setPlayerListName(""); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2/a06adb06d43e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/2/a06adb06d43e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..2ccf0cc --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2/a06adb06d43e001518fa86d7ae2a1cf8 @@ -0,0 +1,219 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + case "confirm": + DoReload(player); //2015.08.09. + break; + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/20/2004d51d42a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/20/2004d51d42a600151c15ab42d7919fee new file mode 100644 index 0000000..75a751b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/20/2004d51d42a600151c15ab42d7919fee @@ -0,0 +1,371 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.FlairColor == 0x00 ? 0xb + : mp.FlairColor)); //TODO: Quiz queue + //TODO: Flairs from Command Block The Button - Teams + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + /* + * Channel c = ((Chat) Bukkit.getPluginManager().getPlugin("TownyChat")) + * .getChannelsHandler().getActiveChannel(e.getPlayer(), + * channelTypes.GLOBAL); + */ + /* + * List modes = ((Chat) Bukkit.getPluginManager().getPlugin( + * "TownyChat")).getTowny().getPlayerMode(e.getPlayer()); if + * (modes.size() == 0 || modes.contains("g")) { + */ + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/20/802a22d2de40001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/20/802a22d2de40001514c09dece48b36c7 new file mode 100644 index 0000000..2df291c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/20/802a22d2de40001514c09dece48b36c7 @@ -0,0 +1,71 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message.replaceAll(p.getName(), ) + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/20/b08b3094cf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/20/b08b3094cf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..50ac8ec --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/20/b08b3094cf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,364 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + player.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/21/20cc239649a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/21/20cc239649a600151c15ab42d7919fee new file mode 100644 index 0000000..9b3d382 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/21/20cc239649a600151c15ab42d7919fee @@ -0,0 +1,355 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.IOUtils; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.htmlcleaner.HtmlCleaner; +import org.htmlcleaner.TagNode; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.*; +import java.lang.String; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLConnection; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.TimeZone; + +public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15. + // A user, which flair isn't obtainable: + // https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + public static PluginMain Instance; + public static ConsoleCommandSender Console; // 2015.08.12. + + // Fired when plugin is first enabled + @Override + public void onEnable() { + try { + System.out.println("Extracting necessary libraries..."); + final File[] libs = new File[] { new File(getDataFolder(), + "htmlcleaner-2.16.jar") }; + for (final File lib : libs) { + if (!lib.exists()) { + JarUtils.extractFromJar(lib.getName(), + lib.getAbsolutePath()); + } + } + for (final File lib : libs) { + if (!lib.exists()) { + getLogger().warning( + "Failed to load plugin! Could not find lib: " + + lib.getName()); + Bukkit.getServer().getPluginManager().disablePlugin(this); + return; + } + addClassPath(JarUtils.getJarUrl(lib)); + } + } catch (final Exception e) { + e.printStackTrace(); + } + + getServer().getPluginManager().registerEvents(new PlayerListener(), + this); + Commands comm = new Commands(); + this.getCommand("u").setExecutor(comm); + this.getCommand("u").setUsage( + this.getCommand("u").getUsage().replace('&', '§')); + this.getCommand("nrp").setExecutor(comm); + this.getCommand("nrp").setUsage( + this.getCommand("nrp").getUsage().replace('&', '§')); + this.getCommand("ooc").setExecutor(comm); + this.getCommand("ooc").setUsage( + this.getCommand("ooc").getUsage().replace('&', '§')); + Instance = this; // 2015.08.08. + Console = this.getServer().getConsoleSender(); // 2015.08.12. + LoadFiles(false); // 2015.08.09. + Runnable r = new Runnable() { + public void run() { + ThreadMethod(); + } + }; + Thread t = new Thread(r); + t.start(); + r = new Runnable() { + public void run() { + AnnouncerThread.Run(); + } + }; + t = new Thread(r); + t.start(); + } + + public Boolean stop = false; + + // Fired when plugin is disabled + @Override + public void onDisable() { + SaveFiles(); // 2015.08.09. + stop = true; + } + + private void ThreadMethod() { + while (!stop) { + try { + String body = DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json = new JSONArray(body).getJSONObject(1) + .getJSONObject("data").getJSONArray("children"); + for (Object obj : json) { + JSONObject item = (JSONObject) obj; + String author = item.getJSONObject("data").getString( + "author"); + String ign = item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + if (start == -1 + "IGN:".length()) // +length: 2015.08.10. + continue; // 2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end = ign.indexOf('\n', start); // 2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.GetFromName(ign); + if (mp == null) + continue; + if (!mp.UserNames.contains(author)) + mp.UserNames.add(author); + if (mp.FlairState.equals(FlairStates.NoComment)) { + mp.FlairState = FlairStates.Commented; + ConfirmUserMessage(mp); + } + try { + Thread.sleep(10); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } + try { + Thread.sleep(10000); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + // System.out.println("Error!\n" + e); + LastException = e; // 2015.08.09. + } + } + } + + public void DownloadFlair(MaybeOfflinePlayer mp) + throws MalformedURLException, IOException { + String[] flairdata = DownloadString( + "http://karmadecay.com/thebutton-data.php?users=" + mp.UserName) + .replace("\"", "").split(":"); + String flair; + if (flairdata.length > 1) + flair = flairdata[1]; + else + flair = ""; + String flairclass; + if (flairdata.length > 2) + flairclass = flairdata[2]; + else + flairclass = "unknown"; + SetFlair(mp, flair, flairclass, mp.UserName); + } + + public static Exception LastException; // 2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, + IOException { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + private void SetFlair(MaybeOfflinePlayer p, String text, String flairclass, + String username) { + p.UserName = username; + p.FlairState = FlairStates.Recognised; + switch (flairclass) { + case "press-1": + p.SetFlairColor(0xc); + break; + case "press-2": + p.SetFlairColor(0x6); + break; + case "press-3": + p.SetFlairColor(0xe); + break; + case "press-4": + p.SetFlairColor(0xa); + break; + case "press-5": + p.SetFlairColor(0x9); + break; + case "press-6": + p.SetFlairColor(0x5); + break; + case "no-press": + p.SetFlairColor(0x7); + break; + case "cheater": + p.SetFlairColor(0x5); + break; + case "cant-press": + p.FlairColor = 0xf; + break; + case "unknown": + if (text.equals("-1")) // If true, only non-presser/can't press; if + // false, any flair + { + try { + if (CheckForJoinDate(p)) { + p.FlairColor = 0x7; + p.FlairTime = "--"; + } else { + p.FlairColor = 0xf; + p.FlairTime = "--"; + } + } catch (Exception e) { + p.FlairState = FlairStates.Commented; // Flair unknown + p.FlairColor = 0; + e.printStackTrace(); + } + } else { + p.FlairState = FlairStates.Commented; // Flair unknown + p.FlairColor = 0; + } + return; + default: + return; + } + if (text.equals("-1")) + text = "--"; + p.FlairTime = text; + } + + public static boolean CheckForJoinDate(MaybeOfflinePlayer mp) + throws Exception { + URL url = new URL("https://www.reddit.com/u/" + mp.UserName); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + HtmlCleaner cleaner = new HtmlCleaner(); + TagNode node = cleaner.clean(in); + + node = node.getElementsByAttValue("class", "age", true, true)[0]; + node = node.getElementsByName("time", false)[0]; + String joindate = node.getAttributeByName("datetime"); + SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd"); + joindate = joindate.split("T")[0]; + Date date = parserSDF.parse(joindate); + return date.before(new Calendar.Builder() + .setTimeZone(TimeZone.getTimeZone("UTC")).setDate(2015, 4, 1) + .build().getTime()); + } + + public static void ConfirmUserMessage(MaybeOfflinePlayer mp) { + Player p = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented) && p != null) + if (mp.UserNames.size() > 1) + p.sendMessage("§9Multiple Reddit users commented your name. You can select with /u accept.§r §6Type /u accept or /u ignore§r"); + else + p.sendMessage("§9A Reddit user commented your name. Is that you?§r §6Type /u accept or /u ignore§r"); + } + + public static Collection GetPlayers() { + return Instance.getServer().getOnlinePlayers(); + } + + public static ArrayList AnnounceMessages = new ArrayList<>(); + public static int AnnounceTime = 15 * 60 * 1000; + + public static void LoadFiles(boolean reload) { + if (reload) { + System.out + .println("The Button Minecraft plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + AnnounceMessages.clear(); + } + System.out.println("Loading files for The Button Minecraft plugin..."); + try { + File file = new File("announcemessages.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsaccepted.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsignored.txt"); + if (file.exists()) + file.delete(); + file = new File("thebuttonmc.yml"); + if (file.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + yc.load(file); + MaybeOfflinePlayer.Load(yc); + PlayerListener.NotificationSound = yc + .getString("notificationsound"); + PlayerListener.NotificationPitch = yc + .getDouble("notificationpitch"); + AnnounceTime = yc.getInt("announcetime"); + AnnounceMessages.addAll(yc.getStringList("announcements")); + } + System.out.println("The Button Minecraft plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } catch (InvalidConfigurationException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + public static void SaveFiles() { + System.out.println("Saving files for The Button Minecraft plugin..."); + try { + File file = new File("thebuttonmc.yml"); + YamlConfiguration yc = new YamlConfiguration(); + MaybeOfflinePlayer.Save(yc); + yc.set("notificationsound", PlayerListener.NotificationSound); + yc.set("notificationpitch", PlayerListener.NotificationPitch); + yc.set("announcetime", AnnounceTime); + yc.set("announcements", AnnounceMessages); + yc.save(file); + System.out.println("The Button Minecraft plugin saved files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + private void addClassPath(final URL url) throws IOException { + final URLClassLoader sysloader = (URLClassLoader) ClassLoader + .getSystemClassLoader(); + final Class sysclass = URLClassLoader.class; + try { + final Method method = sysclass.getDeclaredMethod("addURL", + new Class[] { URL.class }); + method.setAccessible(true); + method.invoke(sysloader, new Object[] { url }); + } catch (final Throwable t) { + t.printStackTrace(); + throw new IOException("Error adding " + url + + " to system classloader"); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/21/c0a02994e640001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/21/c0a02994e640001514c09dece48b36c7 new file mode 100644 index 0000000..8bd4265 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/21/c0a02994e640001514c09dece48b36c7 @@ -0,0 +1,74 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + if(message.contains(p.getName())) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 1.0f); //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/22/408c617d44a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/22/408c617d44a600151c15ab42d7919fee new file mode 100644 index 0000000..18f37b7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/22/408c617d44a600151c15ab42d7919fee @@ -0,0 +1,368 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.FlairColor == 0x00 ? 0xb + : mp.FlairColor)); // TODO: Quiz queue + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + // TODO: Flairs from Command Block The Button - Teams + //PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + event.getPlayer().setPlayerListName(""); + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + if (e.getMessage().equalsIgnoreCase("lol")) + Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(e.getPlayer() + .getUniqueId()); + + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/22/40feff6ce640001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/22/40feff6ce640001514c09dece48b36c7 new file mode 100644 index 0000000..4e9ef04 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/22/40feff6ce640001514c09dece48b36c7 @@ -0,0 +1,73 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0, 1.0); //2015.08.12. + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/22/a091cfc4d23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/22/a091cfc4d23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..5d7321f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/22/a091cfc4d23e001518fa86d7ae2a1cf8 @@ -0,0 +1,215 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Reloaded all files.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/23/a0c7c72cd33e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/23/a0c7c72cd33e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..f17161d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/23/a0c7c72cd33e001518fa86d7ae2a1cf8 @@ -0,0 +1,216 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; + //SendMessage(player, msg); //2015.08.09. + + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/24/c0d763f341a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/24/c0d763f341a600151c15ab42d7919fee new file mode 100644 index 0000000..75a751b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/24/c0d763f341a600151c15ab42d7919fee @@ -0,0 +1,371 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.FlairColor == 0x00 ? 0xb + : mp.FlairColor)); //TODO: Quiz queue + //TODO: Flairs from Command Block The Button - Teams + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + /* + * Channel c = ((Chat) Bukkit.getPluginManager().getPlugin("TownyChat")) + * .getChannelsHandler().getActiveChannel(e.getPlayer(), + * channelTypes.GLOBAL); + */ + /* + * List modes = ((Chat) Bukkit.getPluginManager().getPlugin( + * "TownyChat")).getTowny().getPlayerMode(e.getPlayer()); if + * (modes.size() == 0 || modes.contains("g")) { + */ + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/25/3067ea8bd13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/25/3067ea8bd13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..c1c6d6a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/25/3067ea8bd13e001518fa86d7ae2a1cf8 @@ -0,0 +1,326 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + Load(false); + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) + { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/25/c05ce792e640001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/25/c05ce792e640001514c09dece48b36c7 new file mode 100644 index 0000000..12d9c01 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/25/c05ce792e640001514c09dece48b36c7 @@ -0,0 +1,73 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 1.0f); //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/26/20fee89fce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/26/20fee89fce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..ab06769 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/26/20fee89fce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,360 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + public static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/26/a0111a40d33e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/26/a0111a40d33e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..61ec61c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/26/a0111a40d33e001518fa86d7ae2a1cf8 @@ -0,0 +1,215 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/27/9011edbed23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/27/9011edbed23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..717cff8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/27/9011edbed23e001518fa86d7ae2a1cf8 @@ -0,0 +1,215 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Reloaded all files.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/27/f08a8910cf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/27/f08a8910cf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..999a5ae --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/27/f08a8910cf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,362 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) + { + + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/28/309e6352d33e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/28/309e6352d33e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..d073151 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/28/309e6352d33e001518fa86d7ae2a1cf8 @@ -0,0 +1,216 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/29/40e1da43e340001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/29/40e1da43e340001514c09dece48b36c7 new file mode 100644 index 0000000..b844d5e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/29/40e1da43e340001514c09dece48b36c7 @@ -0,0 +1,295 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + PluginMain.Console.sendMessage("§6-- Reloading Auto-flair plugin...§r"); + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); //2015.08.12. + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/29/50338b22e340001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/29/50338b22e340001514c09dece48b36c7 new file mode 100644 index 0000000..4f33dd3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/29/50338b22e340001514c09dece48b36c7 @@ -0,0 +1,298 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); //2015.08.12. + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2a/20868515d03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/2a/20868515d03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..ccaedeb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2a/20868515d03e001518fa86d7ae2a1cf8 @@ -0,0 +1,363 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + player.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2b/702271ffde40001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/2b/702271ffde40001514c09dece48b36c7 new file mode 100644 index 0000000..e334416 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2b/702271ffde40001514c09dece48b36c7 @@ -0,0 +1,297 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§6Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2c/80f4cccb41a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/2c/80f4cccb41a600151c15ab42d7919fee new file mode 100644 index 0000000..8b1058f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2c/80f4cccb41a600151c15ab42d7919fee @@ -0,0 +1,599 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + Player p=null; + if(Lastlol!=null || (p=Bukkit.getPlayer(Lastlol.UUID))!=null) + { + p.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 10, 5, false, false)); + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2e/90fc2ebfd23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/2e/90fc2ebfd23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..717cff8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2e/90fc2ebfd23e001518fa86d7ae2a1cf8 @@ -0,0 +1,215 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Reloaded all files.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/2f/30aed98449a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/2f/30aed98449a600151c15ab42d7919fee new file mode 100644 index 0000000..ceb7a8c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/2f/30aed98449a600151c15ab42d7919fee @@ -0,0 +1,355 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.IOUtils; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.htmlcleaner.HtmlCleaner; +import org.htmlcleaner.TagNode; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.*; +import java.lang.String; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLConnection; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.TimeZone; + +public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15. + // A user, which flair isn't obtainable: + // https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + public static PluginMain Instance; + public static ConsoleCommandSender Console; // 2015.08.12. + + // Fired when plugin is first enabled + @Override + public void onEnable() { + try { + System.out.println("Extracting necessary libraries..."); + final File[] libs = new File[] { new File(getDataFolder(), + "htmlcleaner-2.16.jar") }; + for (final File lib : libs) { + if (!lib.exists()) { + JarUtils.extractFromJar(lib.getName(), + lib.getAbsolutePath()); + } + } + for (final File lib : libs) { + if (!lib.exists()) { + getLogger().warning( + "Failed to load plugin! Could not find lib: " + + lib.getName()); + Bukkit.getServer().getPluginManager().disablePlugin(this); + return; + } + addClassPath(JarUtils.getJarUrl(lib)); + } + } catch (final Exception e) { + e.printStackTrace(); + } + + getServer().getPluginManager().registerEvents(new PlayerListener(), + this); + Commands comm = new Commands(); + this.getCommand("u").setExecutor(comm); + this.getCommand("u").setUsage( + this.getCommand("u").getUsage().replace('&', '§')); + this.getCommand("nrp").setExecutor(comm); + this.getCommand("nrp").setUsage( + this.getCommand("nrp").getUsage().replace('&', '§')); + this.getCommand("ooc").setExecutor(comm); + this.getCommand("ooc").setUsage( + this.getCommand("ooc").getUsage().replace('&', '§')); + Instance = this; // 2015.08.08. + Console = this.getServer().getConsoleSender(); // 2015.08.12. + LoadFiles(false); // 2015.08.09. + Runnable r = new Runnable() { + public void run() { + ThreadMethod(); + } + }; + Thread t = new Thread(r); + t.start(); + r = new Runnable() { + public void run() { + AnnouncerThread.Run(); + } + }; + t = new Thread(r); + t.start(); + } + + public Boolean stop = false; + + // Fired when plugin is disabled + @Override + public void onDisable() { + SaveFiles(); // 2015.08.09. + stop = true; + } + + private void ThreadMethod() { + while (!stop) { + try { + String body = DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json = new JSONArray(body).getJSONObject(1) + .getJSONObject("data").getJSONArray("children"); + for (Object obj : json) { + JSONObject item = (JSONObject) obj; + String author = item.getJSONObject("data").getString( + "author"); + String ign = item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + if (start == -1 + "IGN:".length()) // +length: 2015.08.10. + continue; // 2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end = ign.indexOf('\n', start); // 2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.GetFromName(ign); + if (mp == null) + continue; + if (!mp.UserNames.contains(author)) + mp.UserNames.add(author); + if (mp.FlairState.equals(FlairStates.NoComment)) { + mp.FlairState = FlairStates.Commented; + ConfirmUserMessage(mp); + } + try { + Thread.sleep(10); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } + try { + Thread.sleep(10000); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + // System.out.println("Error!\n" + e); + LastException = e; // 2015.08.09. + } + } + } + + public void DownloadFlair(MaybeOfflinePlayer mp) + throws MalformedURLException, IOException { + String[] flairdata = DownloadString( + "http://karmadecay.com/thebutton-data.php?users=" + mp.UserName) + .replace("\"", "").split(":"); + String flair; + if (flairdata.length > 1) + flair = flairdata[1]; + else + flair = ""; + String flairclass; + if (flairdata.length > 2) + flairclass = flairdata[2]; + else + flairclass = "unknown"; + SetFlair(mp, flair, flairclass, mp.UserName); + } + + public static Exception LastException; // 2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, + IOException { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + private void SetFlair(MaybeOfflinePlayer p, String text, String flairclass, + String username) { + p.UserName = username; + p.FlairState = FlairStates.Recognised; + switch (flairclass) { + case "press-1": + p.FlairColor = 0xc; + break; + case "press-2": + p.FlairColor = 0x6; + break; + case "press-3": + p.FlairColor = 0xe; + break; + case "press-4": + p.FlairColor = 0xa; + break; + case "press-5": + p.FlairColor = 0x9; + break; + case "press-6": + p.FlairColor = 0x5; + break; + case "no-press": + p.FlairColor = 0x7; + break; + case "cheater": + p.FlairColor = 0x5; + break; + case "cant-press": + p.FlairColor = 0xf; + break; + case "unknown": + if (text.equals("-1")) // If true, only non-presser/can't press; if + // false, any flair + { + try { + if (CheckForJoinDate(p)) { + p.FlairColor = 0x7; + p.FlairTime = "--"; + } else { + p.FlairColor = 0xf; + p.FlairTime = "--"; + } + } catch (Exception e) { + p.FlairState = FlairStates.Commented; // Flair unknown + p.FlairColor = 0; + e.printStackTrace(); + } + } else { + p.FlairState = FlairStates.Commented; // Flair unknown + p.FlairColor = 0; + } + return; + default: + return; + } + if (text.equals("-1")) + text = "--"; + p.FlairTime = text; + } + + public static boolean CheckForJoinDate(MaybeOfflinePlayer mp) + throws Exception { + URL url = new URL("https://www.reddit.com/u/" + mp.UserName); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + HtmlCleaner cleaner = new HtmlCleaner(); + TagNode node = cleaner.clean(in); + + node = node.getElementsByAttValue("class", "age", true, true)[0]; + node = node.getElementsByName("time", false)[0]; + String joindate = node.getAttributeByName("datetime"); + SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd"); + joindate = joindate.split("T")[0]; + Date date = parserSDF.parse(joindate); + return date.before(new Calendar.Builder() + .setTimeZone(TimeZone.getTimeZone("UTC")).setDate(2015, 4, 1) + .build().getTime()); + } + + public static void ConfirmUserMessage(MaybeOfflinePlayer mp) { + Player p = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented) && p != null) + if (mp.UserNames.size() > 1) + p.sendMessage("§9Multiple Reddit users commented your name. You can select with /u accept.§r §6Type /u accept or /u ignore§r"); + else + p.sendMessage("§9A Reddit user commented your name. Is that you?§r §6Type /u accept or /u ignore§r"); + } + + public static Collection GetPlayers() { + return Instance.getServer().getOnlinePlayers(); + } + + public static ArrayList AnnounceMessages = new ArrayList<>(); + public static int AnnounceTime = 15 * 60 * 1000; + + public static void LoadFiles(boolean reload) { + if (reload) { + System.out + .println("The Button Minecraft plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + AnnounceMessages.clear(); + } + System.out.println("Loading files for The Button Minecraft plugin..."); + try { + File file = new File("announcemessages.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsaccepted.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsignored.txt"); + if (file.exists()) + file.delete(); + file = new File("thebuttonmc.yml"); + if (file.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + yc.load(file); + MaybeOfflinePlayer.Load(yc); + PlayerListener.NotificationSound = yc + .getString("notificationsound"); + PlayerListener.NotificationPitch = yc + .getDouble("notificationpitch"); + AnnounceTime = yc.getInt("announcetime"); + AnnounceMessages.addAll(yc.getStringList("announcements")); + } + System.out.println("The Button Minecraft plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } catch (InvalidConfigurationException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + public static void SaveFiles() { + System.out.println("Saving files for The Button Minecraft plugin..."); + try { + File file = new File("thebuttonmc.yml"); + YamlConfiguration yc = new YamlConfiguration(); + MaybeOfflinePlayer.Save(yc); + yc.set("notificationsound", PlayerListener.NotificationSound); + yc.set("notificationpitch", PlayerListener.NotificationPitch); + yc.set("announcetime", AnnounceTime); + yc.set("announcements", AnnounceMessages); + yc.save(file); + System.out.println("The Button Minecraft plugin saved files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + private void addClassPath(final URL url) throws IOException { + final URLClassLoader sysloader = (URLClassLoader) ClassLoader + .getSystemClassLoader(); + final Class sysclass = URLClassLoader.class; + try { + final Method method = sysclass.getDeclaredMethod("addURL", + new Class[] { URL.class }); + method.setAccessible(true); + method.invoke(sysloader, new Object[] { url }); + } catch (final Throwable t) { + t.printStackTrace(); + throw new IOException("Error adding " + url + + " to system classloader"); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3/004e1951d8a500151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/3/004e1951d8a500151c15ab42d7919fee new file mode 100644 index 0000000..36790ac --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3/004e1951d8a500151c15ab42d7919fee @@ -0,0 +1,596 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static boolean PluginUpdated = false; // 2015.08.31. + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) + { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/30/20a0c374d23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/30/20a0c374d23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..641be01 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/30/20a0c374d23e001518fa86d7ae2a1cf8 @@ -0,0 +1,345 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + SaveFiles(); //2015.08.09. + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + System.out.println("Auto-flair plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + public static void SaveFiles() //<-- 2015.08.09. + { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/30/60f899dc2d53001516cdaaef55e27ba4 b/.metadata/.plugins/org.eclipse.core.resources/.history/30/60f899dc2d53001516cdaaef55e27ba4 new file mode 100644 index 0000000..dcd717b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/30/60f899dc2d53001516cdaaef55e27ba4 @@ -0,0 +1,15 @@ +name: TheButtonMCPlugin +main: tk.sznp.thebuttonautoflair.PluginMain +version: 2.0 +commands: + u: + description: Auto-flair system. Accept or ignore flair. + usage: "&cUsage: /u accept|ignore|opme&r" + nrp: + description: Send message in Out-of-Character + usage: "&cUsage: /nrp &r" + ooc: + description: Send message in Out-of-Character + usage: "&cUsage: /ooc &r" +author: NorbiPeti +depend: [Essentials, Towny] \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/31/20e2516b49a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/31/20e2516b49a600151c15ab42d7919fee new file mode 100644 index 0000000..b9ffc59 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/31/20e2516b49a600151c15ab42d7919fee @@ -0,0 +1,122 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(short color) { + FlairColor = color; + SetFlair2(); + } + + public void SetFlairTime(String time) { + FlairTime = time; + SetFlair2(); + } + + public void SetFlair(short color, String time) { + FlairColor = color; + FlairTime = time; + SetFlair2(); + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + Player p = Bukkit.getPlayer(UUID); + p.setPlayerListName(String.format("%s%s", p.getPlayerListName(), + GetFormattedFlair())); + } + + public short GetFlairColor() + { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/31/c0e1dbcdcf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/31/c0e1dbcdcf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..276d1df --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/31/c0e1dbcdcf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,363 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(player, p); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + player.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/32/907f4f6a44a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/32/907f4f6a44a600151c15ab42d7919fee new file mode 100644 index 0000000..8a203ea --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/32/907f4f6a44a600151c15ab42d7919fee @@ -0,0 +1,367 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.FlairColor == 0x00 ? 0xb + : mp.FlairColor)); // TODO: Quiz queue + // TODO: Flairs from Command Block The Button - Teams + //PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + event.getPlayer().setPlayerListName(""); + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + if (e.getMessage().equalsIgnoreCase("lol")) + Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(e.getPlayer() + .getUniqueId()); + + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/34/40f80735d5a500151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/34/40f80735d5a500151c15ab42d7919fee new file mode 100644 index 0000000..372cbb8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/34/40f80735d5a500151c15ab42d7919fee @@ -0,0 +1,370 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.FlairColor == 0x00 ? 0xb + : mp.FlairColor)); //TODO: Quiz queue + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + /* + * Channel c = ((Chat) Bukkit.getPluginManager().getPlugin("TownyChat")) + * .getChannelsHandler().getActiveChannel(e.getPlayer(), + * channelTypes.GLOBAL); + */ + /* + * List modes = ((Chat) Bukkit.getPluginManager().getPlugin( + * "TownyChat")).getTowny().getPlayerMode(e.getPlayer()); if + * (modes.size() == 0 || modes.contains("g")) { + */ + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/34/b097b71bce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/34/b097b71bce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..1f5948c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/34/b097b71bce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,354 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + String finalflair; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + public static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/37/20e61fc4d13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/37/20e61fc4d13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..39f0d07 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/37/20e61fc4d13e001518fa86d7ae2a1cf8 @@ -0,0 +1,370 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + MaybeOfflinePlayer.AllPlayers.clear(); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/37/c0f63c61e240001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/37/c0f63c61e240001514c09dece48b36c7 new file mode 100644 index 0000000..7cad3e7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/37/c0f63c61e240001514c09dece48b36c7 @@ -0,0 +1,451 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + public static ConsoleSender Console; //2015.08.12. + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + SaveFiles(); //2015.08.09. + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + //System.out.println("Start: "+start); + if(start==-1+"IGN:".length()) //+length: 2015.08.10. + continue; //2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + //System.out.println("End: "+end); + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + //System.out.println("IGN: "+ign); + ign = ign.trim(); + //System.out.println("Trimmed IGN: "+ign); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + /*else + flair = "non-presser";*/ + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + //return p.Flair!=null; //2015.08.08. + return p.CommentedOnReddit; //2015.08.10. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + p.FlairRecognised=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(--s)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(??s)§r"; + break; + case "unknown": + if(text.equals("-1")) //If true, only non-presser/can't press; if false, any flair + p.FlairDecided=false; + else + p.FlairRecognised=false; + finalflair=""; + break; + default: + //finalflair=""; + //break; + return; + } + /*if(finalflair.length()==0) //<-- 2015.07.20. + return;*/ + p.Flair=finalflair; //2015.08.08. + p.CommentedOnReddit=true; //2015.08.10. + p.UserName=username; //2015.08.08. + if(finalflair.length()==0) //Just for the message + finalflair="undecided"; + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + //return flair==null ? "" : flair; + return flair; //2015.08.10. + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + //AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + /*private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + *String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + if(s.length>=2) //<-- 2015.08.10. + TownColors.put(s[0], s[1]); + } + br.close(); + } + file=new File("customflairs.txt"); //2015.08.09. + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + if(s.length>=2) //2015.08.10. + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(s[0]); + p.Flair=s[1]; //2015.08.09. + p.CommentedOnReddit=true; //Kind of + } + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + System.out.println("Auto-flair plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + public static void SaveFiles() //<-- 2015.08.09. + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + public static boolean RemoveLineFromFile(String file, String line) + { //2015.08.09. + File inputFile = new File(file); + File tempFile = new File("_temp.txt"); + + if(!inputFile.exists()) + return true; //2015.08.10. + + try { + BufferedReader reader = new BufferedReader(new FileReader(inputFile)); + BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); + + String lineToRemove = line; + String currentLine; + + while((currentLine = reader.readLine()) != null) { + // trim newline when comparing with lineToRemove + String trimmedLine = currentLine.trim(); + //if(trimmedLine.equals(lineToRemove)) continue; + if(trimmedLine.contains(lineToRemove)) continue; //2015.08.09. + writer.write(currentLine + System.getProperty("line.separator")); + } + writer.close(); + reader.close(); + if(!tempFile.renameTo(inputFile)) + { + inputFile.delete(); + return tempFile.renameTo(inputFile); + } + else + return true; + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + return false; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/38/209c0ada49a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/38/209c0ada49a600151c15ab42d7919fee new file mode 100644 index 0000000..1310b41 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/38/209c0ada49a600151c15ab42d7919fee @@ -0,0 +1,353 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.IOUtils; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.htmlcleaner.HtmlCleaner; +import org.htmlcleaner.TagNode; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.*; +import java.lang.String; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLConnection; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.TimeZone; + +public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15. + // A user, which flair isn't obtainable: + // https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + public static PluginMain Instance; + public static ConsoleCommandSender Console; // 2015.08.12. + + // Fired when plugin is first enabled + @Override + public void onEnable() { + try { + System.out.println("Extracting necessary libraries..."); + final File[] libs = new File[] { new File(getDataFolder(), + "htmlcleaner-2.16.jar") }; + for (final File lib : libs) { + if (!lib.exists()) { + JarUtils.extractFromJar(lib.getName(), + lib.getAbsolutePath()); + } + } + for (final File lib : libs) { + if (!lib.exists()) { + getLogger().warning( + "Failed to load plugin! Could not find lib: " + + lib.getName()); + Bukkit.getServer().getPluginManager().disablePlugin(this); + return; + } + addClassPath(JarUtils.getJarUrl(lib)); + } + } catch (final Exception e) { + e.printStackTrace(); + } + + getServer().getPluginManager().registerEvents(new PlayerListener(), + this); + Commands comm = new Commands(); + this.getCommand("u").setExecutor(comm); + this.getCommand("u").setUsage( + this.getCommand("u").getUsage().replace('&', '§')); + this.getCommand("nrp").setExecutor(comm); + this.getCommand("nrp").setUsage( + this.getCommand("nrp").getUsage().replace('&', '§')); + this.getCommand("ooc").setExecutor(comm); + this.getCommand("ooc").setUsage( + this.getCommand("ooc").getUsage().replace('&', '§')); + Instance = this; // 2015.08.08. + Console = this.getServer().getConsoleSender(); // 2015.08.12. + LoadFiles(false); // 2015.08.09. + Runnable r = new Runnable() { + public void run() { + ThreadMethod(); + } + }; + Thread t = new Thread(r); + t.start(); + r = new Runnable() { + public void run() { + AnnouncerThread.Run(); + } + }; + t = new Thread(r); + t.start(); + } + + public Boolean stop = false; + + // Fired when plugin is disabled + @Override + public void onDisable() { + SaveFiles(); // 2015.08.09. + stop = true; + } + + private void ThreadMethod() { + while (!stop) { + try { + String body = DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json = new JSONArray(body).getJSONObject(1) + .getJSONObject("data").getJSONArray("children"); + for (Object obj : json) { + JSONObject item = (JSONObject) obj; + String author = item.getJSONObject("data").getString( + "author"); + String ign = item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + if (start == -1 + "IGN:".length()) // +length: 2015.08.10. + continue; // 2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end = ign.indexOf('\n', start); // 2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.GetFromName(ign); + if (mp == null) + continue; + if (!mp.UserNames.contains(author)) + mp.UserNames.add(author); + if (mp.FlairState.equals(FlairStates.NoComment)) { + mp.FlairState = FlairStates.Commented; + ConfirmUserMessage(mp); + } + try { + Thread.sleep(10); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } + try { + Thread.sleep(10000); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + // System.out.println("Error!\n" + e); + LastException = e; // 2015.08.09. + } + } + } + + public void DownloadFlair(MaybeOfflinePlayer mp) + throws MalformedURLException, IOException { + String[] flairdata = DownloadString( + "http://karmadecay.com/thebutton-data.php?users=" + mp.UserName) + .replace("\"", "").split(":"); + String flair; + if (flairdata.length > 1) + flair = flairdata[1]; + else + flair = ""; + String flairclass; + if (flairdata.length > 2) + flairclass = flairdata[2]; + else + flairclass = "unknown"; + SetFlair(mp, flair, flairclass, mp.UserName); + } + + public static Exception LastException; // 2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, + IOException { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + private void SetFlair(MaybeOfflinePlayer p, String text, String flairclass, + String username) { + p.UserName = username; + p.FlairState = FlairStates.Recognised; + switch (flairclass) { + case "press-1": + p.SetFlairColor(0xc); + break; + case "press-2": + p.SetFlairColor(0x6); + break; + case "press-3": + p.SetFlairColor(0xe); + break; + case "press-4": + p.SetFlairColor(0xa); + break; + case "press-5": + p.SetFlairColor(0x9); + break; + case "press-6": + p.SetFlairColor(0x5); + break; + case "no-press": + p.SetFlairColor(0x7); + break; + case "cheater": + p.SetFlairColor(0x5); + break; + case "cant-press": + p.SetFlairColor(0xf); + break; + case "unknown": + if (text.equals("-1")) // If true, only non-presser/can't press; if + // false, any flair + { + try { + if (CheckForJoinDate(p)) { + p.SetFlair(0x7, "--"); + } else { + p.SetFlair(0xf, "--"); + } + } catch (Exception e) { + p.FlairState = FlairStates.Commented; // Flair unknown + p.FlairColor = 0; + e.printStackTrace(); + } + } else { + p.FlairState = FlairStates.Commented; // Flair unknown + p.FlairColor = 0; + } + return; + default: + return; + } + if (text.equals("-1")) + text = "--"; + p.FlairTime = text; + } + + public static boolean CheckForJoinDate(MaybeOfflinePlayer mp) + throws Exception { + URL url = new URL("https://www.reddit.com/u/" + mp.UserName); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + HtmlCleaner cleaner = new HtmlCleaner(); + TagNode node = cleaner.clean(in); + + node = node.getElementsByAttValue("class", "age", true, true)[0]; + node = node.getElementsByName("time", false)[0]; + String joindate = node.getAttributeByName("datetime"); + SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd"); + joindate = joindate.split("T")[0]; + Date date = parserSDF.parse(joindate); + return date.before(new Calendar.Builder() + .setTimeZone(TimeZone.getTimeZone("UTC")).setDate(2015, 4, 1) + .build().getTime()); + } + + public static void ConfirmUserMessage(MaybeOfflinePlayer mp) { + Player p = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented) && p != null) + if (mp.UserNames.size() > 1) + p.sendMessage("§9Multiple Reddit users commented your name. You can select with /u accept.§r §6Type /u accept or /u ignore§r"); + else + p.sendMessage("§9A Reddit user commented your name. Is that you?§r §6Type /u accept or /u ignore§r"); + } + + public static Collection GetPlayers() { + return Instance.getServer().getOnlinePlayers(); + } + + public static ArrayList AnnounceMessages = new ArrayList<>(); + public static int AnnounceTime = 15 * 60 * 1000; + + public static void LoadFiles(boolean reload) { + if (reload) { + System.out + .println("The Button Minecraft plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + AnnounceMessages.clear(); + } + System.out.println("Loading files for The Button Minecraft plugin..."); + try { + File file = new File("announcemessages.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsaccepted.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsignored.txt"); + if (file.exists()) + file.delete(); + file = new File("thebuttonmc.yml"); + if (file.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + yc.load(file); + MaybeOfflinePlayer.Load(yc); + PlayerListener.NotificationSound = yc + .getString("notificationsound"); + PlayerListener.NotificationPitch = yc + .getDouble("notificationpitch"); + AnnounceTime = yc.getInt("announcetime"); + AnnounceMessages.addAll(yc.getStringList("announcements")); + } + System.out.println("The Button Minecraft plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } catch (InvalidConfigurationException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + public static void SaveFiles() { + System.out.println("Saving files for The Button Minecraft plugin..."); + try { + File file = new File("thebuttonmc.yml"); + YamlConfiguration yc = new YamlConfiguration(); + MaybeOfflinePlayer.Save(yc); + yc.set("notificationsound", PlayerListener.NotificationSound); + yc.set("notificationpitch", PlayerListener.NotificationPitch); + yc.set("announcetime", AnnounceTime); + yc.set("announcements", AnnounceMessages); + yc.save(file); + System.out.println("The Button Minecraft plugin saved files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + private void addClassPath(final URL url) throws IOException { + final URLClassLoader sysloader = (URLClassLoader) ClassLoader + .getSystemClassLoader(); + final Class sysclass = URLClassLoader.class; + try { + final Method method = sysclass.getDeclaredMethod("addURL", + new Class[] { URL.class }); + method.setAccessible(true); + method.invoke(sysloader, new Object[] { url }); + } catch (final Throwable t) { + t.printStackTrace(); + throw new IOException("Error adding " + url + + " to system classloader"); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/38/a0523ba549a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/38/a0523ba549a600151c15ab42d7919fee new file mode 100644 index 0000000..cfd3af2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/38/a0523ba549a600151c15ab42d7919fee @@ -0,0 +1,125 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(short color) { + FlairColor = color; + SetFlair2(); + } + + public void SetFlairTime(String time) { + FlairTime = time; + SetFlair2(); + } + + public void SetFlair(short color, String time) { + FlairColor = color; + FlairTime = time; + SetFlair2(); + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + Player p = Bukkit.getPlayer(UUID); + p.setPlayerListName(String.format("%s%s", p.getPlayerListName(), + GetFormattedFlair())); + } + + public short GetFlairColor() { + return FlairColor; + } + + public String GetFlairTime() { + return FlairTime; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/38/a0f3a0e9cf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/38/a0f3a0e9cf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..327e9f3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/38/a0f3a0e9cf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,197 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(player, p); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/39/2006034ad03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/39/2006034ad03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..c6af7c6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/39/2006034ad03e001518fa86d7ae2a1cf8 @@ -0,0 +1,201 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3b/30bdb825cd3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/3b/30bdb825cd3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..a9fdf9d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3b/30bdb825cd3e001518fa86d7ae2a1cf8 @@ -0,0 +1,25 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.HashMap; + +public class MaybeOfflinePlayer +{ //2015.08.08. + public String PlayerName; + public String UserName; + public String Flair; //If the user comments their name, it gets set, it doesn't matter if they accepted it or not + public boolean AcceptedFlair; + public boolean IgnoredFlair; + public + public static HashMap AllPlayers=new HashMap<>(); //2015.08.08. + public static MaybeOfflinePlayer AddPlayerIfNeeded(String playername) + { + if(!AllPlayers.containsKey(playername)) + { + MaybeOfflinePlayer player=new MaybeOfflinePlayer(); + player.PlayerName=playername; + AllPlayers.put(playername, player); + return player; + } + return AllPlayers.get(playername); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3b/50ce8dd8d4a500151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/3b/50ce8dd8d4a500151c15ab42d7919fee new file mode 100644 index 0000000..947236f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3b/50ce8dd8d4a500151c15ab42d7919fee @@ -0,0 +1,369 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", mp.FlairColor); + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + /* + * Channel c = ((Chat) Bukkit.getPluginManager().getPlugin("TownyChat")) + * .getChannelsHandler().getActiveChannel(e.getPlayer(), + * channelTypes.GLOBAL); + */ + /* + * List modes = ((Chat) Bukkit.getPluginManager().getPlugin( + * "TownyChat")).getTowny().getPlayerMode(e.getPlayer()); if + * (modes.size() == 0 || modes.contains("g")) { + */ + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3c/205637bed23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/3c/205637bed23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..19e20e0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3c/205637bed23e001518fa86d7ae2a1cf8 @@ -0,0 +1,215 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true) + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Reloaded all files.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3c/d00a0e58e240001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/3c/d00a0e58e240001514c09dece48b36c7 new file mode 100644 index 0000000..e68eaa6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3c/d00a0e58e240001514c09dece48b36c7 @@ -0,0 +1,450 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + SaveFiles(); //2015.08.09. + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + //System.out.println("Start: "+start); + if(start==-1+"IGN:".length()) //+length: 2015.08.10. + continue; //2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + //System.out.println("End: "+end); + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + //System.out.println("IGN: "+ign); + ign = ign.trim(); + //System.out.println("Trimmed IGN: "+ign); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + /*else + flair = "non-presser";*/ + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + //return p.Flair!=null; //2015.08.08. + return p.CommentedOnReddit; //2015.08.10. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + p.FlairRecognised=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(--s)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(??s)§r"; + break; + case "unknown": + if(text.equals("-1")) //If true, only non-presser/can't press; if false, any flair + p.FlairDecided=false; + else + p.FlairRecognised=false; + finalflair=""; + break; + default: + //finalflair=""; + //break; + return; + } + /*if(finalflair.length()==0) //<-- 2015.07.20. + return;*/ + p.Flair=finalflair; //2015.08.08. + p.CommentedOnReddit=true; //2015.08.10. + p.UserName=username; //2015.08.08. + if(finalflair.length()==0) //Just for the message + finalflair="undecided"; + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + //return flair==null ? "" : flair; + return flair; //2015.08.10. + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + //AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + /*private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + *String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + if(s.length>=2) //<-- 2015.08.10. + TownColors.put(s[0], s[1]); + } + br.close(); + } + file=new File("customflairs.txt"); //2015.08.09. + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + if(s.length>=2) //2015.08.10. + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(s[0]); + p.Flair=s[1]; //2015.08.09. + p.CommentedOnReddit=true; //Kind of + } + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + System.out.println("Auto-flair plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + public static void SaveFiles() //<-- 2015.08.09. + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + public static boolean RemoveLineFromFile(String file, String line) + { //2015.08.09. + File inputFile = new File(file); + File tempFile = new File("_temp.txt"); + + if(!inputFile.exists()) + return true; //2015.08.10. + + try { + BufferedReader reader = new BufferedReader(new FileReader(inputFile)); + BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); + + String lineToRemove = line; + String currentLine; + + while((currentLine = reader.readLine()) != null) { + // trim newline when comparing with lineToRemove + String trimmedLine = currentLine.trim(); + //if(trimmedLine.equals(lineToRemove)) continue; + if(trimmedLine.contains(lineToRemove)) continue; //2015.08.09. + writer.write(currentLine + System.getProperty("line.separator")); + } + writer.close(); + reader.close(); + if(!tempFile.renameTo(inputFile)) + { + inputFile.delete(); + return tempFile.renameTo(inputFile); + } + else + return true; + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + return false; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3e/6022916ee240001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/3e/6022916ee240001514c09dece48b36c7 new file mode 100644 index 0000000..75e4c81 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3e/6022916ee240001514c09dece48b36c7 @@ -0,0 +1,452 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + public static ConsoleCommandSender Console; //2015.08.12. + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + SaveFiles(); //2015.08.09. + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + //System.out.println("Start: "+start); + if(start==-1+"IGN:".length()) //+length: 2015.08.10. + continue; //2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + //System.out.println("End: "+end); + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + //System.out.println("IGN: "+ign); + ign = ign.trim(); + //System.out.println("Trimmed IGN: "+ign); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + /*else + flair = "non-presser";*/ + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + //return p.Flair!=null; //2015.08.08. + return p.CommentedOnReddit; //2015.08.10. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + p.FlairRecognised=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(--s)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(??s)§r"; + break; + case "unknown": + if(text.equals("-1")) //If true, only non-presser/can't press; if false, any flair + p.FlairDecided=false; + else + p.FlairRecognised=false; + finalflair=""; + break; + default: + //finalflair=""; + //break; + return; + } + /*if(finalflair.length()==0) //<-- 2015.07.20. + return;*/ + p.Flair=finalflair; //2015.08.08. + p.CommentedOnReddit=true; //2015.08.10. + p.UserName=username; //2015.08.08. + if(finalflair.length()==0) //Just for the message + finalflair="undecided"; + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + //return flair==null ? "" : flair; + return flair; //2015.08.10. + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + //AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + /*private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + *String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + if(s.length>=2) //<-- 2015.08.10. + TownColors.put(s[0], s[1]); + } + br.close(); + } + file=new File("customflairs.txt"); //2015.08.09. + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + if(s.length>=2) //2015.08.10. + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(s[0]); + p.Flair=s[1]; //2015.08.09. + p.CommentedOnReddit=true; //Kind of + } + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + System.out.println("Auto-flair plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + public static void SaveFiles() //<-- 2015.08.09. + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + public static boolean RemoveLineFromFile(String file, String line) + { //2015.08.09. + File inputFile = new File(file); + File tempFile = new File("_temp.txt"); + + if(!inputFile.exists()) + return true; //2015.08.10. + + try { + BufferedReader reader = new BufferedReader(new FileReader(inputFile)); + BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); + + String lineToRemove = line; + String currentLine; + + while((currentLine = reader.readLine()) != null) { + // trim newline when comparing with lineToRemove + String trimmedLine = currentLine.trim(); + //if(trimmedLine.equals(lineToRemove)) continue; + if(trimmedLine.contains(lineToRemove)) continue; //2015.08.09. + writer.write(currentLine + System.getProperty("line.separator")); + } + writer.close(); + reader.close(); + if(!tempFile.renameTo(inputFile)) + { + inputFile.delete(); + return tempFile.renameTo(inputFile); + } + else + return true; + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + return false; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/3f/a0709f19cf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/3f/a0709f19cf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..9476659 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/3f/a0709f19cf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,362 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, flair); //2015.07.20. + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/4/b030d637cd3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/4/b030d637cd3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..587e2b6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/4/b030d637cd3e001518fa86d7ae2a1cf8 @@ -0,0 +1,29 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.HashMap; + +public class MaybeOfflinePlayer +{ //2015.08.08. + public String PlayerName; + public String UserName; + public String Flair; //If the user comments their name, it gets set, it doesn't matter if they accepted it or not + public boolean AcceptedFlair; + public boolean IgnoredFlair; + //public + public static HashMap AllPlayers=new HashMap<>(); //2015.08.08. + public static MaybeOfflinePlayer AddPlayerIfNeeded(String playername) + { + if(!AllPlayers.containsKey(playername)) + { + MaybeOfflinePlayer player=new MaybeOfflinePlayer(); + player.PlayerName=playername; + AllPlayers.put(playername, player); + return player; + } + return AllPlayers.get(playername); + } + public enum FlairClassType + { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/41/20453fde49a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/41/20453fde49a600151c15ab42d7919fee new file mode 100644 index 0000000..5721445 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/41/20453fde49a600151c15ab42d7919fee @@ -0,0 +1,353 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.IOUtils; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.htmlcleaner.HtmlCleaner; +import org.htmlcleaner.TagNode; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.*; +import java.lang.String; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLConnection; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.TimeZone; + +public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15. + // A user, which flair isn't obtainable: + // https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + public static PluginMain Instance; + public static ConsoleCommandSender Console; // 2015.08.12. + + // Fired when plugin is first enabled + @Override + public void onEnable() { + try { + System.out.println("Extracting necessary libraries..."); + final File[] libs = new File[] { new File(getDataFolder(), + "htmlcleaner-2.16.jar") }; + for (final File lib : libs) { + if (!lib.exists()) { + JarUtils.extractFromJar(lib.getName(), + lib.getAbsolutePath()); + } + } + for (final File lib : libs) { + if (!lib.exists()) { + getLogger().warning( + "Failed to load plugin! Could not find lib: " + + lib.getName()); + Bukkit.getServer().getPluginManager().disablePlugin(this); + return; + } + addClassPath(JarUtils.getJarUrl(lib)); + } + } catch (final Exception e) { + e.printStackTrace(); + } + + getServer().getPluginManager().registerEvents(new PlayerListener(), + this); + Commands comm = new Commands(); + this.getCommand("u").setExecutor(comm); + this.getCommand("u").setUsage( + this.getCommand("u").getUsage().replace('&', '§')); + this.getCommand("nrp").setExecutor(comm); + this.getCommand("nrp").setUsage( + this.getCommand("nrp").getUsage().replace('&', '§')); + this.getCommand("ooc").setExecutor(comm); + this.getCommand("ooc").setUsage( + this.getCommand("ooc").getUsage().replace('&', '§')); + Instance = this; // 2015.08.08. + Console = this.getServer().getConsoleSender(); // 2015.08.12. + LoadFiles(false); // 2015.08.09. + Runnable r = new Runnable() { + public void run() { + ThreadMethod(); + } + }; + Thread t = new Thread(r); + t.start(); + r = new Runnable() { + public void run() { + AnnouncerThread.Run(); + } + }; + t = new Thread(r); + t.start(); + } + + public Boolean stop = false; + + // Fired when plugin is disabled + @Override + public void onDisable() { + SaveFiles(); // 2015.08.09. + stop = true; + } + + private void ThreadMethod() { + while (!stop) { + try { + String body = DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json = new JSONArray(body).getJSONObject(1) + .getJSONObject("data").getJSONArray("children"); + for (Object obj : json) { + JSONObject item = (JSONObject) obj; + String author = item.getJSONObject("data").getString( + "author"); + String ign = item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + if (start == -1 + "IGN:".length()) // +length: 2015.08.10. + continue; // 2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end = ign.indexOf('\n', start); // 2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.GetFromName(ign); + if (mp == null) + continue; + if (!mp.UserNames.contains(author)) + mp.UserNames.add(author); + if (mp.FlairState.equals(FlairStates.NoComment)) { + mp.FlairState = FlairStates.Commented; + ConfirmUserMessage(mp); + } + try { + Thread.sleep(10); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } + try { + Thread.sleep(10000); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + // System.out.println("Error!\n" + e); + LastException = e; // 2015.08.09. + } + } + } + + public void DownloadFlair(MaybeOfflinePlayer mp) + throws MalformedURLException, IOException { + String[] flairdata = DownloadString( + "http://karmadecay.com/thebutton-data.php?users=" + mp.UserName) + .replace("\"", "").split(":"); + String flair; + if (flairdata.length > 1) + flair = flairdata[1]; + else + flair = ""; + String flairclass; + if (flairdata.length > 2) + flairclass = flairdata[2]; + else + flairclass = "unknown"; + SetFlair(mp, flair, flairclass, mp.UserName); + } + + public static Exception LastException; // 2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, + IOException { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + private void SetFlair(MaybeOfflinePlayer p, String text, String flairclass, + String username) { + p.UserName = username; + p.FlairState = FlairStates.Recognised; + switch (flairclass) { + case "press-1": + p.SetFlairColor(0xc); + break; + case "press-2": + p.SetFlairColor(0x6); + break; + case "press-3": + p.SetFlairColor(0xe); + break; + case "press-4": + p.SetFlairColor(0xa); + break; + case "press-5": + p.SetFlairColor(0x9); + break; + case "press-6": + p.SetFlairColor(0x5); + break; + case "no-press": + p.SetFlairColor(0x7); + break; + case "cheater": + p.SetFlairColor(0x5); + break; + case "cant-press": + p.SetFlairColor(0xf); + break; + case "unknown": + if (text.equals("-1")) // If true, only non-presser/can't press; if + // false, any flair + { + try { + if (CheckForJoinDate(p)) { + p.SetFlair(0x7, "--"); + } else { + p.SetFlair(0xf, "--"); + } + } catch (Exception e) { + p.FlairState = FlairStates.Commented; // Flair unknown + p.SetFlairColor(0); + e.printStackTrace(); + } + } else { + p.FlairState = FlairStates.Commented; // Flair unknown + p.FlairColor = 0; + } + return; + default: + return; + } + if (text.equals("-1")) + text = "--"; + p.FlairTime = text; + } + + public static boolean CheckForJoinDate(MaybeOfflinePlayer mp) + throws Exception { + URL url = new URL("https://www.reddit.com/u/" + mp.UserName); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + HtmlCleaner cleaner = new HtmlCleaner(); + TagNode node = cleaner.clean(in); + + node = node.getElementsByAttValue("class", "age", true, true)[0]; + node = node.getElementsByName("time", false)[0]; + String joindate = node.getAttributeByName("datetime"); + SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd"); + joindate = joindate.split("T")[0]; + Date date = parserSDF.parse(joindate); + return date.before(new Calendar.Builder() + .setTimeZone(TimeZone.getTimeZone("UTC")).setDate(2015, 4, 1) + .build().getTime()); + } + + public static void ConfirmUserMessage(MaybeOfflinePlayer mp) { + Player p = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented) && p != null) + if (mp.UserNames.size() > 1) + p.sendMessage("§9Multiple Reddit users commented your name. You can select with /u accept.§r §6Type /u accept or /u ignore§r"); + else + p.sendMessage("§9A Reddit user commented your name. Is that you?§r §6Type /u accept or /u ignore§r"); + } + + public static Collection GetPlayers() { + return Instance.getServer().getOnlinePlayers(); + } + + public static ArrayList AnnounceMessages = new ArrayList<>(); + public static int AnnounceTime = 15 * 60 * 1000; + + public static void LoadFiles(boolean reload) { + if (reload) { + System.out + .println("The Button Minecraft plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + AnnounceMessages.clear(); + } + System.out.println("Loading files for The Button Minecraft plugin..."); + try { + File file = new File("announcemessages.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsaccepted.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsignored.txt"); + if (file.exists()) + file.delete(); + file = new File("thebuttonmc.yml"); + if (file.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + yc.load(file); + MaybeOfflinePlayer.Load(yc); + PlayerListener.NotificationSound = yc + .getString("notificationsound"); + PlayerListener.NotificationPitch = yc + .getDouble("notificationpitch"); + AnnounceTime = yc.getInt("announcetime"); + AnnounceMessages.addAll(yc.getStringList("announcements")); + } + System.out.println("The Button Minecraft plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } catch (InvalidConfigurationException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + public static void SaveFiles() { + System.out.println("Saving files for The Button Minecraft plugin..."); + try { + File file = new File("thebuttonmc.yml"); + YamlConfiguration yc = new YamlConfiguration(); + MaybeOfflinePlayer.Save(yc); + yc.set("notificationsound", PlayerListener.NotificationSound); + yc.set("notificationpitch", PlayerListener.NotificationPitch); + yc.set("announcetime", AnnounceTime); + yc.set("announcements", AnnounceMessages); + yc.save(file); + System.out.println("The Button Minecraft plugin saved files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + private void addClassPath(final URL url) throws IOException { + final URLClassLoader sysloader = (URLClassLoader) ClassLoader + .getSystemClassLoader(); + final Class sysclass = URLClassLoader.class; + try { + final Method method = sysclass.getDeclaredMethod("addURL", + new Class[] { URL.class }); + method.setAccessible(true); + method.invoke(sysloader, new Object[] { url }); + } catch (final Throwable t) { + t.printStackTrace(); + throw new IOException("Error adding " + url + + " to system classloader"); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/41/c0d7140345a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/41/c0d7140345a600151c15ab42d7919fee new file mode 100644 index 0000000..f38d34c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/41/c0d7140345a600151c15ab42d7919fee @@ -0,0 +1,112 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(short color) + { + } + + public void SetFlairTime(String time) + { + + } + + public void SetFlair(short color, String time) + { + + } + + private void SetFlair2() + { + + //Flairs from Command Block The Button - Teams + //PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + event.getPlayer().setPlayerListName(""); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/44/3078a0bed23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/44/3078a0bed23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..717cff8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/44/3078a0bed23e001518fa86d7ae2a1cf8 @@ -0,0 +1,215 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Reloaded all files.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/44/b01fe45045a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/44/b01fe45045a600151c15ab42d7919fee new file mode 100644 index 0000000..ab3ff1c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/44/b01fe45045a600151c15ab42d7919fee @@ -0,0 +1,113 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(short color) { + FlairColor = color; + SetFlair2(); + } + + public void SetFlairTime(String time) { + FlairTime = time; + SetFlair2(); + } + + public void SetFlair(short color, String time) { + FlairColor = color; + FlairTime = time; + SetFlair2(); + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + event.getPlayer().setPlayerListName(""); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/46/a0e24f1ad43e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/46/a0e24f1ad43e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..678f6a5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/46/a0e24f1ad43e001518fa86d7ae2a1cf8 @@ -0,0 +1,221 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + + SendMessage(player, "§6Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done."); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + case "confirm": + DoReload(player); //2015.08.09. + break; + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/47/209354bad13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/47/209354bad13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..1a55983 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/47/209354bad13e001518fa86d7ae2a1cf8 @@ -0,0 +1,370 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) + { + if(reload) + MaybeOfflinePlayer.AllPlayers.clear(); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/47/20a74d8ad13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/47/20a74d8ad13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..c0e1cef --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/47/20a74d8ad13e001518fa86d7ae2a1cf8 @@ -0,0 +1,368 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) + { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/49/203c0b4ad33e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/49/203c0b4ad33e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..1cec033 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/49/203c0b4ad33e001518fa86d7ae2a1cf8 @@ -0,0 +1,215 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/49/a04d8dc3d23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/49/a04d8dc3d23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..5d7321f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/49/a04d8dc3d23e001518fa86d7ae2a1cf8 @@ -0,0 +1,215 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Reloaded all files.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/49/b0556e29ce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/49/b0556e29ce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..26a60f9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/49/b0556e29ce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,355 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + String finalflair; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + public static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/4a/20662b05d33e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/4a/20662b05d33e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..63c2d54 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/4a/20662b05d33e001518fa86d7ae2a1cf8 @@ -0,0 +1,215 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Reloaded all files.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/4b/203dd097ce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/4b/203dd097ce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..4e85b74 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/4b/203dd097ce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,358 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + public static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/4b/40b1bfa8755d001515f3fd278c34f57e b/.metadata/.plugins/org.eclipse.core.resources/.history/4b/40b1bfa8755d001515f3fd278c34f57e new file mode 100644 index 0000000..2d88af8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/4b/40b1bfa8755d001515f3fd278c34f57e @@ -0,0 +1,465 @@ +package tk.sznp.thebuttonautoflair; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; +import org.apache.commons.io.IOUtils; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.*; +import java.lang.String; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15. + // A user, which flair isn't obtainable: + // https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + public static PluginMain Instance; + public static ConsoleCommandSender Console; // 2015.08.12. + + // Fired when plugin is first enabled + @Override + public void onEnable() { + System.out.println("The Button Minecraft server plugin"); + getServer().getPluginManager().registerEvents(new PlayerListener(), + this); + Commands comm = new Commands(); + this.getCommand("u").setExecutor(comm); + this.getCommand("u").setUsage( + this.getCommand("u").getUsage().replace('&', '§')); + this.getCommand("nrp").setExecutor(comm); + this.getCommand("nrp").setUsage( + this.getCommand("nrp").getUsage().replace('&', '§')); + this.getCommand("ooc").setExecutor(comm); + this.getCommand("ooc").setUsage( + this.getCommand("ooc").getUsage().replace('&', '§')); + Instance = this; // 2015.08.08. + Console = this.getServer().getConsoleSender(); // 2015.08.12. + LoadFiles(false); // 2015.08.09. + Runnable r = new Runnable() { + public void run() { + ThreadMethod(); + } + }; + Thread t = new Thread(r); + t.start(); + r = new Runnable() { + public void run() { + AnnouncerThread.Run(); + } + }; + t = new Thread(r); + t.start(); + } + + public Boolean stop = false; + + // Fired when plugin is disabled + @Override + public void onDisable() { + SaveFiles(); // 2015.08.09. + stop = true; + } + + public void ThreadMethod() // <-- 2015.07.16. + { + while (!stop) { + try { + String body = DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json = new JSONArray(body).getJSONObject(1) + .getJSONObject("data").getJSONArray("children"); + for (Object obj : json) { + JSONObject item = (JSONObject) obj; + String author = item.getJSONObject("data").getString( + "author"); + String ign = item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + if (start == -1 + "IGN:".length()) // +length: 2015.08.10. + continue; // 2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end = ign.indexOf('\n', start); // 2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if (HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString( + "http://karmadecay.com/thebutton-data.php?users=" + + author).replace("\"", "").split(":"); + String flair; + if (flairdata.length > 1) // 2015.07.15. + flair = flairdata[1]; + else + flair = ""; + if (flair != "-1") + flair = flair + "s"; + String flairclass; + if (flairdata.length > 2) + flairclass = flairdata[2]; + else + flairclass = "unknown"; + SetFlair(ign, flair, flairclass, author); + } + try { + Thread.sleep(10000); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + System.out.println("Error!\n" + e); + LastException = e; // 2015.08.09. + } + } + } + + public static Exception LastException; // 2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, + IOException { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors = new HashMap(); // 2015.07.20. + + public Boolean HasIGFlair(String playername) { + MaybeOfflinePlayer p = MaybeOfflinePlayer.AddPlayerIfNeeded(playername); // 2015.08.08. + return p.CommentedOnReddit; // 2015.08.10. + } + + public void SetFlair(String playername, String text, String flairclass, + String username) { + MaybeOfflinePlayer p = MaybeOfflinePlayer.AddPlayerIfNeeded(playername); // 2015.08.08. + String finalflair; + p.FlairDecided = true; + p.FlairRecognised = true; + switch (flairclass) { + case "press-1": + finalflair = "§c(" + text + ")§r"; + break; + case "press-2": + finalflair = "§6(" + text + ")§r"; + break; + case "press-3": + finalflair = "§e(" + text + ")§r"; + break; + case "press-4": + finalflair = "§a(" + text + ")§r"; + break; + case "press-5": + finalflair = "§9(" + text + ")§r"; + break; + case "press-6": + finalflair = "§5(" + text + ")§r"; + break; + case "no-press": + finalflair = "§7(--s)§r"; + break; + case "cheater": + finalflair = "§5(" + text + ")§r"; + break; + case "cant-press": // 2015.08.08. + finalflair = "§r(??s)§r"; + break; + case "unknown": + if (text.equals("-1")) // If true, only non-presser/can't press; if + // false, any flair + p.FlairDecided = false; + else + p.FlairRecognised = false; + finalflair = ""; + break; + default: + return; + } + p.Flair = finalflair; // 2015.08.08. + p.CommentedOnReddit = true; // 2015.08.10. + p.UserName = username; // 2015.08.08. + for (Player player : getServer().getOnlinePlayers()) // <-- 2015.08.08. + { + if (player.getName().equals(playername)) { + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) { // 2015.07.16. + String flair = MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; // 2015.08.08. + // return flair==null ? "" : flair; + return flair; // 2015.08.10. + } + + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, + Player p) // <-- 2015.08.09. + { + + if (MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if (MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) { + if (!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); // 2015.08.09. + } else + p.sendMessage("§9Are you Reddit user " + player.UserName + + "?§r §6Type /u accept or /u ignore§r"); + } + + public static String GetColorForTown(String townname) { // 2015.07.20. + if (TownColors.containsKey(townname)) + return TownColors.get(townname); + return ""; + } + + public static String GetPlayerTown(Player player) { // 2015.07.20. + try { + Town town = WorldCoord.parseWorldCoord(player).getTownBlock() + .getTown(); // TODO + return town.getName(); + } catch (Exception e) { + return ""; + } + } + + public static Collection GetPlayers() { + return Instance.getServer().getOnlinePlayers(); + } + + public static ArrayList AnnounceMessages = new ArrayList<>(); + public static int AnnounceTime = 15 * 60 * 1000; + + public static void LoadFiles(boolean reload) // <-- 2015.08.09. + { + if (reload) { // 2015.08.09. + System.out + .println("The Button Minecraft plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + AnnounceMessages.clear(); + } + System.out.println("Loading files for The Button Minecraft plugin..."); // 2015.08.09. + try { + File file = new File("flairsaccepted.txt"); + if (file.exists()) { + BufferedReader br = new BufferedReader(new FileReader( + "flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) { + String name = line.replace("\n", ""); + // System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair = true; // 2015.08.08. + } + br.close(); + } + file = new File("flairsignored.txt"); + if (file.exists()) { + BufferedReader br = new BufferedReader(new FileReader( + "flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) { + String name = line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair = true; // 2015.08.08. + } + br.close(); + } + file = new File("autoflairconfig.txt"); + if (file.exists()) { + BufferedReader br = new BufferedReader(new FileReader(file)); + String line; + while ((line = br.readLine()) != null) { + String[] s = line.split(" "); + if (s.length >= 2) // <-- 2015.08.10. + TownColors.put(s[0], s[1]); + } + br.close(); + } + file = new File("customflairs.txt"); // 2015.08.09. + if (file.exists()) { + BufferedReader br = new BufferedReader(new FileReader(file)); + String line; + while ((line = br.readLine()) != null) { + String[] s = line.split(" "); + if (s.length >= 2) // 2015.08.10. + { + MaybeOfflinePlayer p = MaybeOfflinePlayer + .AddPlayerIfNeeded(s[0]); + p.Flair = s[1]; // 2015.08.09. + p.CommentedOnReddit = true; // Kind of + p.FlairDecided = true; + p.FlairRecognised = true; + } + } + br.close(); + } + file = new File("notificationsound.txt"); // 2015.08.09. + if (file.exists()) { + BufferedReader br = new BufferedReader(new FileReader(file)); + String line = br.readLine(); + String[] split = line.split(" "); + PlayerListener.NotificationSound = split[0]; + PlayerListener.NotificationPitch = Float.parseFloat(split[1]); + br.close(); + } + file = new File("announcemessages.txt"); // 2015.08.09. + if (file.exists()) { + BufferedReader br = new BufferedReader(new FileReader(file)); + String line; + boolean first = true; + while ((line = br.readLine()) != null) { + if (first) { + AnnounceTime = Integer.parseInt(line.trim()); + first = false; + } else + AnnounceMessages.add(line.trim()); + } + br.close(); + } else { + // Write time + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file)); + bw.write(AnnounceTime + "\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + System.out.println("The Button Minecraft plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; // 2015.08.09. + } + } + + public static void SaveFiles() // <-- 2015.08.09. + { + try { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } catch (Exception e) { + System.out.println("Error!\n" + e); + LastException = e; // 2015.08.09. + } + try { + File file = new File("flairsaccepted.txt"); + BufferedWriter bw = new BufferedWriter(new FileWriter(file, true)); + for (MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers + .values()) // <-- 2015.08.08. + { + if (!player.AcceptedFlair) + continue; // 2015.08.08. + bw.write(player.PlayerName + "\n"); + } + bw.close(); + file = new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for (MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers + .values()) // <-- 2015.08.08. + { + if (!player.IgnoredFlair) + continue; // 2015.08.08. + bw.write(player.PlayerName + "\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; // 2015.08.09. + } + } + + public static boolean RemoveLineFromFile(String file, String line) { // 2015.08.09. + File inputFile = new File(file); + File tempFile = new File("_temp.txt"); + + if (!inputFile.exists()) + return true; // 2015.08.10. + + try { + BufferedReader reader = new BufferedReader( + new FileReader(inputFile)); + BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); + + String lineToRemove = line; + String currentLine; + + while ((currentLine = reader.readLine()) != null) { + // trim newline when comparing with lineToRemove + String trimmedLine = currentLine.trim(); + if (trimmedLine.split(" ")[0].equals(lineToRemove)) + continue; // 2015.08.17. + writer.write(currentLine + System.getProperty("line.separator")); + } + writer.close(); + reader.close(); + if (!tempFile.renameTo(inputFile)) { + inputFile.delete(); + return tempFile.renameTo(inputFile); + } else + return true; + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; // 2015.08.09. + } + return false; + } + + public static boolean RemoveLineFromFile(String file, int index) { + File inputFile = new File(file); + File tempFile = new File("_temp2.txt"); + + if (!inputFile.exists()) + return true; // 2015.08.10. + + try { + BufferedReader reader = new BufferedReader( + new FileReader(inputFile)); + BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); + + String currentLine; + int i = 0; + + while ((currentLine = reader.readLine()) != null) { + if (i++ == index) + continue; + writer.write(currentLine + System.getProperty("line.separator")); + } + writer.close(); + reader.close(); + if (!tempFile.renameTo(inputFile)) { + inputFile.delete(); + return tempFile.renameTo(inputFile); + } else + return true; + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; // 2015.08.09. + } + return false; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/4c/30becb7849a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/4c/30becb7849a600151c15ab42d7919fee new file mode 100644 index 0000000..2837b3f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/4c/30becb7849a600151c15ab42d7919fee @@ -0,0 +1,122 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(short color) { + FlairColor = color; + SetFlair2(); + } + + public void SetFlairTime(String time) { + FlairTime = time; + SetFlair2(); + } + + public void SetFlair(short color, String time) { + FlairColor = color; + FlairTime = time; + SetFlair2(); + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + Player p = Bukkit.getPlayer(UUID); + p.setPlayerListName(String.format("%s%s", p.getPlayerListName(), + GetFormattedFlair())); + } + + public short GetFlairColor() + { + return FlairColor; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/4d/a0ee15dcd13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/4d/a0ee15dcd13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..fb29d4f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/4d/a0ee15dcd13e001518fa86d7ae2a1cf8 @@ -0,0 +1,373 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + if(reload) + { + MaybeOfflinePlayer.AllPlayers.clear(); //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/4d/c045effe4ba600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/4d/c045effe4ba600151c15ab42d7919fee new file mode 100644 index 0000000..fefe37f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/4d/c045effe4ba600151c15ab42d7919fee @@ -0,0 +1,353 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.IOUtils; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.htmlcleaner.HtmlCleaner; +import org.htmlcleaner.TagNode; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.*; +import java.lang.String; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLConnection; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.TimeZone; + +public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15. + // A user, which flair isn't obtainable: + // https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + public static PluginMain Instance; + public static ConsoleCommandSender Console; // 2015.08.12. + + // Fired when plugin is first enabled + @Override + public void onEnable() { + try { + System.out.println("Extracting necessary libraries..."); + final File[] libs = new File[] { new File(getDataFolder(), + "htmlcleaner-2.16.jar") }; + for (final File lib : libs) { + if (!lib.exists()) { + JarUtils.extractFromJar(lib.getName(), + lib.getAbsolutePath()); + } + } + for (final File lib : libs) { + if (!lib.exists()) { + getLogger().warning( + "Failed to load plugin! Could not find lib: " + + lib.getName()); + Bukkit.getServer().getPluginManager().disablePlugin(this); + return; + } + addClassPath(JarUtils.getJarUrl(lib)); + } + } catch (final Exception e) { + e.printStackTrace(); + } + + getServer().getPluginManager().registerEvents(new PlayerListener(), + this); + Commands comm = new Commands(); + this.getCommand("u").setExecutor(comm); + this.getCommand("u").setUsage( + this.getCommand("u").getUsage().replace('&', '§')); + this.getCommand("nrp").setExecutor(comm); + this.getCommand("nrp").setUsage( + this.getCommand("nrp").getUsage().replace('&', '§')); + this.getCommand("ooc").setExecutor(comm); + this.getCommand("ooc").setUsage( + this.getCommand("ooc").getUsage().replace('&', '§')); + Instance = this; // 2015.08.08. + Console = this.getServer().getConsoleSender(); // 2015.08.12. + LoadFiles(false); // 2015.08.09. + Runnable r = new Runnable() { + public void run() { + ThreadMethod(); + } + }; + Thread t = new Thread(r); + t.start(); + r = new Runnable() { + public void run() { + AnnouncerThread.Run(); + } + }; + t = new Thread(r); + t.start(); + } + + public Boolean stop = false; + + // Fired when plugin is disabled + @Override + public void onDisable() { + SaveFiles(); // 2015.08.09. + stop = true; + } + + private void ThreadMethod() { + while (!stop) { + try { + String body = DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json = new JSONArray(body).getJSONObject(1) + .getJSONObject("data").getJSONArray("children"); + for (Object obj : json) { + JSONObject item = (JSONObject) obj; + String author = item.getJSONObject("data").getString( + "author"); + String ign = item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + if (start == -1 + "IGN:".length()) // +length: 2015.08.10. + continue; // 2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end = ign.indexOf('\n', start); // 2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.GetFromName(ign); + if (mp == null) + continue; + if (!mp.UserNames.contains(author)) + mp.UserNames.add(author); + if (mp.FlairState.equals(FlairStates.NoComment)) { + mp.FlairState = FlairStates.Commented; + ConfirmUserMessage(mp); + } + try { + Thread.sleep(10); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } + try { + Thread.sleep(10000); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + // System.out.println("Error!\n" + e); + LastException = e; // 2015.08.09. + } + } + } + + public void DownloadFlair(MaybeOfflinePlayer mp) + throws MalformedURLException, IOException { + String[] flairdata = DownloadString( + "http://karmadecay.com/thebutton-data.php?users=" + mp.UserName) + .replace("\"", "").split(":"); + String flair; + if (flairdata.length > 1) + flair = flairdata[1]; + else + flair = ""; + String flairclass; + if (flairdata.length > 2) + flairclass = flairdata[2]; + else + flairclass = "unknown"; + SetFlair(mp, flair, flairclass, mp.UserName); + } + + public static Exception LastException; // 2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, + IOException { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + private void SetFlair(MaybeOfflinePlayer p, String text, String flairclass, + String username) { + p.UserName = username; + p.FlairState = FlairStates.Recognised; + switch (flairclass) { + case "press-1": + p.SetFlairColor(0xc); + break; + case "press-2": + p.SetFlairColor(0x6); + break; + case "press-3": + p.SetFlairColor(0xe); + break; + case "press-4": + p.SetFlairColor(0xa); + break; + case "press-5": + p.SetFlairColor(0x9); + break; + case "press-6": + p.SetFlairColor(0x5); + break; + case "no-press": + p.SetFlairColor(0x7); + break; + case "cheater": + p.SetFlairColor(0x5); + break; + case "cant-press": + p.SetFlairColor(0xf); + break; + case "unknown": + if (text.equals("-1")) // If true, only non-presser/can't press; if + // false, any flair + { + try { + if (CheckForJoinDate(p)) { + p.SetFlair(0x7, "--"); + } else { + p.SetFlair(0xf, "--"); + } + } catch (Exception e) { + p.FlairState = FlairStates.Commented; // Flair unknown + p.SetFlairColor(0); + e.printStackTrace(); + } + } else { + p.FlairState = FlairStates.Commented; // Flair unknown + p.SetFlairColor(0); + } + return; + default: + return; + } + if (text.equals("-1")) + text = "--"; + p.SetFlairTime(text); + } + + public static boolean CheckForJoinDate(MaybeOfflinePlayer mp) + throws Exception { + URL url = new URL("https://www.reddit.com/u/" + mp.UserName); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + HtmlCleaner cleaner = new HtmlCleaner(); + TagNode node = cleaner.clean(in); + + node = node.getElementsByAttValue("class", "age", true, true)[0]; + node = node.getElementsByName("time", false)[0]; + String joindate = node.getAttributeByName("datetime"); + SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd"); + joindate = joindate.split("T")[0]; + Date date = parserSDF.parse(joindate); + return date.before(new Calendar.Builder() + .setTimeZone(TimeZone.getTimeZone("UTC")).setDate(2015, 4, 1) + .build().getTime()); + } + + public static void ConfirmUserMessage(MaybeOfflinePlayer mp) { + Player p = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented) && p != null) + if (mp.UserNames.size() > 1) + p.sendMessage("§9Multiple Reddit users commented your name. You can select with /u accept.§r §6Type /u accept or /u ignore§r"); + else + p.sendMessage("§9A Reddit user commented your name. Is that you?§r §6Type /u accept or /u ignore§r"); + } + + public static Collection GetPlayers() { + return Instance.getServer().getOnlinePlayers(); + } + + public static ArrayList AnnounceMessages = new ArrayList<>(); + public static int AnnounceTime = 15 * 60 * 1000; + + public static void LoadFiles(boolean reload) { + if (reload) { + System.out + .println("The Button Minecraft plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + AnnounceMessages.clear(); + } + System.out.println("Loading files for The Button Minecraft plugin..."); + try { + File file = new File("announcemessages.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsaccepted.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsignored.txt"); + if (file.exists()) + file.delete(); + file = new File("thebuttonmc.yml"); + if (file.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + yc.load(file); + MaybeOfflinePlayer.Load(yc); + PlayerListener.NotificationSound = yc + .getString("notificationsound"); + PlayerListener.NotificationPitch = yc + .getDouble("notificationpitch"); + AnnounceTime = yc.getInt("announcetime"); + AnnounceMessages.addAll(yc.getStringList("announcements")); + } + System.out.println("The Button Minecraft plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } catch (InvalidConfigurationException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + public static void SaveFiles() { + System.out.println("Saving files for The Button Minecraft plugin..."); + try { + File file = new File("thebuttonmc.yml"); + YamlConfiguration yc = new YamlConfiguration(); + MaybeOfflinePlayer.Save(yc); + yc.set("notificationsound", PlayerListener.NotificationSound); + yc.set("notificationpitch", PlayerListener.NotificationPitch); + yc.set("announcetime", AnnounceTime); + yc.set("announcements", AnnounceMessages); + yc.save(file); + System.out.println("The Button Minecraft plugin saved files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + private void addClassPath(final URL url) throws IOException { + final URLClassLoader sysloader = (URLClassLoader) ClassLoader + .getSystemClassLoader(); + final Class sysclass = URLClassLoader.class; + try { + final Method method = sysclass.getDeclaredMethod("addURL", + new Class[] { URL.class }); + method.setAccessible(true); + method.invoke(sysloader, new Object[] { url }); + } catch (final Throwable t) { + t.printStackTrace(); + throw new IOException("Error adding " + url + + " to system classloader"); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/53/202e6b364ba600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/53/202e6b364ba600151c15ab42d7919fee new file mode 100644 index 0000000..f8a30d7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/53/202e6b364ba600151c15ab42d7919fee @@ -0,0 +1,603 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + System.out.println("Lastlol: " + Lastlol); + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/53/40b494f5e540001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/53/40b494f5e540001514c09dece48b36c7 new file mode 100644 index 0000000..d9ec7da --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/53/40b494f5e540001514c09dece48b36c7 @@ -0,0 +1,72 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + p.playSound(arg0, arg1, arg2, arg3) + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/53/d0c1dad6e440001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/53/d0c1dad6e440001514c09dece48b36c7 new file mode 100644 index 0000000..159e3e4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/53/d0c1dad6e440001514c09dece48b36c7 @@ -0,0 +1,296 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + PluginMain.Console.sendMessage("§6-- Reloading Auto-flair plugin...§r"); + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); //2015.08.12. + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/55/c0fc6b25cd3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/55/c0fc6b25cd3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..6549d0e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/55/c0fc6b25cd3e001518fa86d7ae2a1cf8 @@ -0,0 +1,24 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.HashMap; + +public class MaybeOfflinePlayer +{ //2015.08.08. + public String PlayerName; + public String UserName; + public String Flair; //If the user comments their name, it gets set, it doesn't matter if they accepted it or not + public boolean AcceptedFlair; + public boolean IgnoredFlair; + public static HashMap AllPlayers=new HashMap<>(); //2015.08.08. + public static MaybeOfflinePlayer AddPlayerIfNeeded(String playername) + { + if(!AllPlayers.containsKey(playername)) + { + MaybeOfflinePlayer player=new MaybeOfflinePlayer(); + player.PlayerName=playername; + AllPlayers.put(playername, player); + return player; + } + return AllPlayers.get(playername); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/56/205a1cf9d13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/56/205a1cf9d13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..d7286f9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/56/205a1cf9d13e001518fa86d7ae2a1cf8 @@ -0,0 +1,374 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { + System.out.println("Reloading files for auto-flair plugin..."); //2015.08.09. + MaybeOfflinePlayer.AllPlayers.clear(); //2015.08.09. + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/56/f06dfb95d8a500151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/56/f06dfb95d8a500151c15ab42d7919fee new file mode 100644 index 0000000..37b893b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/56/f06dfb95d8a500151c15ab42d7919fee @@ -0,0 +1,596 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + if(Lastlol!=null) + Lastlol.UUID + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5b/008c7edd2d53001516cdaaef55e27ba4 b/.metadata/.plugins/org.eclipse.core.resources/.history/5b/008c7edd2d53001516cdaaef55e27ba4 new file mode 100644 index 0000000..9a58544 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5b/008c7edd2d53001516cdaaef55e27ba4 @@ -0,0 +1,16 @@ +name: TheButtonMCPlugin +main: tk.sznp.thebuttonautoflair.PluginMain +version: 2.0 +commands: + u: + description: Auto-flair system. Accept or ignore flair. + usage: "&cUsage: /u accept|ignore|opme&r" + nrp: + description: Send message in Out-of-Character + usage: "&cUsage: /nrp &r" + ooc: + description: Send message in Out-of-Character + usage: "&cUsage: /ooc &r" +author: NorbiPeti +depend: [Essentials, Towny] +s \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5b/e0d83cf9de40001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/5b/e0d83cf9de40001514c09dece48b36c7 new file mode 100644 index 0000000..68a104f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5b/e0d83cf9de40001514c09dece48b36c7 @@ -0,0 +1,297 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§6Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§6Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5c/a03b3ea1d33e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/5c/a03b3ea1d33e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..3d0defb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5c/a03b3ea1d33e001518fa86d7ae2a1cf8 @@ -0,0 +1,219 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + case "confirm": + DoReload(); + break; + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5d/a0a6c2d0d23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/5d/a0a6c2d0d23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..5d7321f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5d/a0a6c2d0d23e001518fa86d7ae2a1cf8 @@ -0,0 +1,215 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Reloaded all files.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5d/a0befd81d33e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/5d/a0befd81d33e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..3318744 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5d/a0befd81d33e001518fa86d7ae2a1cf8 @@ -0,0 +1,216 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5e/c0d6d38be640001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/5e/c0d6d38be640001514c09dece48b36c7 new file mode 100644 index 0000000..cbc9ea1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5e/c0d6d38be640001514c09dece48b36c7 @@ -0,0 +1,73 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 1.0f); //2015.08.12. + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5f/2061341bd23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/5f/2061341bd23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..ff39b38 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5f/2061341bd23e001518fa86d7ae2a1cf8 @@ -0,0 +1,375 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5f/50257859e640001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/5f/50257859e640001514c09dece48b36c7 new file mode 100644 index 0000000..c192f31 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5f/50257859e640001514c09dece48b36c7 @@ -0,0 +1,72 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + p.playSound(p.getLocation(), , arg2, arg3) + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/5f/c0b28923ce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/5f/c0b28923ce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..26a60f9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/5f/c0b28923ce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,355 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + String finalflair; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + public static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6/2029114dd33e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/6/2029114dd33e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..14132d5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6/2029114dd33e001518fa86d7ae2a1cf8 @@ -0,0 +1,216 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; + p.sendMessage(msg); + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6/208a8252ce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/6/208a8252ce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..7477f60 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6/208a8252ce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,31 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.HashMap; + +public class MaybeOfflinePlayer +{ //2015.08.08. + public String PlayerName; + public String UserName; + public String Flair; //If the user comments their name, it gets set, it doesn't matter if they accepted it or not + public boolean AcceptedFlair; + public boolean IgnoredFlair; + public FlairClassType FlairType; //2015.08.09. + public static HashMap AllPlayers=new HashMap<>(); //2015.08.08. + public static MaybeOfflinePlayer AddPlayerIfNeeded(String playername) + { + if(!AllPlayers.containsKey(playername)) + { + MaybeOfflinePlayer player=new MaybeOfflinePlayer(); + player.PlayerName=playername; + AllPlayers.put(playername, player); + return player; + } + return AllPlayers.get(playername); + } + public enum FlairClassType + { //2015.08.09. + NonPresser, + CantPress, + Undecided + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6/a032431fd23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/6/a032431fd23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..b21f1ef --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6/a032431fd23e001518fa86d7ae2a1cf8 @@ -0,0 +1,375 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/61/b0779e98d03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/61/b0779e98d03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..f7dee03 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/61/b0779e98d03e001518fa86d7ae2a1cf8 @@ -0,0 +1,205 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/63/206c2677ce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/63/206c2677ce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..c13bb09 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/63/206c2677ce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,358 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairType=FlairClassType.Undecided; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + public static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/63/90beaa3cd8a500151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/63/90beaa3cd8a500151c15ab42d7919fee new file mode 100644 index 0000000..36790ac --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/63/90beaa3cd8a500151c15ab42d7919fee @@ -0,0 +1,596 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static boolean PluginUpdated = false; // 2015.08.31. + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) + { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/63/d06551420941001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/63/d06551420941001514c09dece48b36c7 new file mode 100644 index 0000000..e93fc19 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/63/d06551420941001514c09dece48b36c7 @@ -0,0 +1,74 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + if(message.contains(p.getName())) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/64/202fdd3acd3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/64/202fdd3acd3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..d2a8475 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/64/202fdd3acd3e001518fa86d7ae2a1cf8 @@ -0,0 +1,31 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.HashMap; + +public class MaybeOfflinePlayer +{ //2015.08.08. + public String PlayerName; + public String UserName; + public String Flair; //If the user comments their name, it gets set, it doesn't matter if they accepted it or not + public boolean AcceptedFlair; + public boolean IgnoredFlair; + //public + public static HashMap AllPlayers=new HashMap<>(); //2015.08.08. + public static MaybeOfflinePlayer AddPlayerIfNeeded(String playername) + { + if(!AllPlayers.containsKey(playername)) + { + MaybeOfflinePlayer player=new MaybeOfflinePlayer(); + player.PlayerName=playername; + AllPlayers.put(playername, player); + return player; + } + return AllPlayers.get(playername); + } + public enum FlairClassType + { + NonPresser, + CantPress, + Undecided + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/64/20a74791d03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/64/20a74791d03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..5a05c55 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/64/20a74791d03e001518fa86d7ae2a1cf8 @@ -0,0 +1,205 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + return; + } + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/64/90cec71ead9e0015192daf17db672400 b/.metadata/.plugins/org.eclipse.core.resources/.history/64/90cec71ead9e0015192daf17db672400 new file mode 100644 index 0000000..edcd38c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/64/90cec71ead9e0015192daf17db672400 @@ -0,0 +1,595 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static boolean PluginUpdated = false; // 2015.08.31. + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) // toLowerCase: 2015.08.09. + { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/65/5094853442a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/65/5094853442a600151c15ab42d7919fee new file mode 100644 index 0000000..7e5e0ec --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/65/5094853442a600151c15ab42d7919fee @@ -0,0 +1,364 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.FlairColor == 0x00 ? 0xb + : mp.FlairColor)); // TODO: Quiz queue + // TODO: Flairs from Command Block The Button - Teams + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + if (e.getMessage().equalsIgnoreCase("lol")) + Commands.Lastlol = e.getPlayer(); + + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/67/c0952ea8e240001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/67/c0952ea8e240001514c09dece48b36c7 new file mode 100644 index 0000000..340df89 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/67/c0952ea8e240001514c09dece48b36c7 @@ -0,0 +1,298 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message) + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6a/20a2e34ad03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/6a/20a2e34ad03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..330b73a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6a/20a2e34ad03e001518fa86d7ae2a1cf8 @@ -0,0 +1,201 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + s + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6a/406f8416e340001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/6a/406f8416e340001514c09dece48b36c7 new file mode 100644 index 0000000..4f33dd3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6a/406f8416e340001514c09dece48b36c7 @@ -0,0 +1,298 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); //2015.08.12. + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6b/700669952d53001516cdaaef55e27ba4 b/.metadata/.plugins/org.eclipse.core.resources/.history/6b/700669952d53001516cdaaef55e27ba4 new file mode 100644 index 0000000..5b3245c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6b/700669952d53001516cdaaef55e27ba4 @@ -0,0 +1,13 @@ +name: TheButtonMCPlugin +main: tk.sznp.thebuttonautoflair.PluginMain +version: 2.0 +commands: + u: + description: Auto-flair system. Accept or ignore flair. + usage: "&cUsage: /u accept|ignore|opme&r" + nrp: + description: Send message in Out-of-Character + usage: "&cUsage: /nrp &r" + ooc: + description: Send message in Out-of-Character + usage: "&cUsage: /ooc &r" \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6c/20b08dced03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/6c/20b08dced03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..0384150 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6c/20b08dced03e001518fa86d7ae2a1cf8 @@ -0,0 +1,211 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6c/500072fecd3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/6c/500072fecd3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..5740654 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6c/500072fecd3e001518fa86d7ae2a1cf8 @@ -0,0 +1,351 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + String finalflair; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + public static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6c/506c7d4ee140001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/6c/506c7d4ee140001514c09dece48b36c7 new file mode 100644 index 0000000..8742a9c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6c/506c7d4ee140001514c09dece48b36c7 @@ -0,0 +1,71 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6e/60f4f3db2d53001516cdaaef55e27ba4 b/.metadata/.plugins/org.eclipse.core.resources/.history/6e/60f4f3db2d53001516cdaaef55e27ba4 new file mode 100644 index 0000000..f7e6157 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6e/60f4f3db2d53001516cdaaef55e27ba4 @@ -0,0 +1,14 @@ +name: TheButtonMCPlugin +main: tk.sznp.thebuttonautoflair.PluginMain +version: 2.0 +commands: + u: + description: Auto-flair system. Accept or ignore flair. + usage: "&cUsage: /u accept|ignore|opme&r" + nrp: + description: Send message in Out-of-Character + usage: "&cUsage: /nrp &r" + ooc: + description: Send message in Out-of-Character + usage: "&cUsage: /ooc &r" +author: NorbiPeti \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6e/a01e1adad13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/6e/a01e1adad13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..fb29d4f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6e/a01e1adad13e001518fa86d7ae2a1cf8 @@ -0,0 +1,373 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + if(reload) + { + MaybeOfflinePlayer.AllPlayers.clear(); //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6f/10014ab944a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/6f/10014ab944a600151c15ab42d7919fee new file mode 100644 index 0000000..cc10ce9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6f/10014ab944a600151c15ab42d7919fee @@ -0,0 +1,90 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + public String FlairTime; + public short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/6f/d0569c5ae240001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/6f/d0569c5ae240001514c09dece48b36c7 new file mode 100644 index 0000000..5a0d8b8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/6f/d0569c5ae240001514c09dece48b36c7 @@ -0,0 +1,451 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + public static ConsoleSender Console; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + SaveFiles(); //2015.08.09. + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + //System.out.println("Start: "+start); + if(start==-1+"IGN:".length()) //+length: 2015.08.10. + continue; //2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + //System.out.println("End: "+end); + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + //System.out.println("IGN: "+ign); + ign = ign.trim(); + //System.out.println("Trimmed IGN: "+ign); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + /*else + flair = "non-presser";*/ + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + //return p.Flair!=null; //2015.08.08. + return p.CommentedOnReddit; //2015.08.10. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + p.FlairRecognised=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(--s)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(??s)§r"; + break; + case "unknown": + if(text.equals("-1")) //If true, only non-presser/can't press; if false, any flair + p.FlairDecided=false; + else + p.FlairRecognised=false; + finalflair=""; + break; + default: + //finalflair=""; + //break; + return; + } + /*if(finalflair.length()==0) //<-- 2015.07.20. + return;*/ + p.Flair=finalflair; //2015.08.08. + p.CommentedOnReddit=true; //2015.08.10. + p.UserName=username; //2015.08.08. + if(finalflair.length()==0) //Just for the message + finalflair="undecided"; + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + //return flair==null ? "" : flair; + return flair; //2015.08.10. + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + //AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + /*private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + *String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + if(s.length>=2) //<-- 2015.08.10. + TownColors.put(s[0], s[1]); + } + br.close(); + } + file=new File("customflairs.txt"); //2015.08.09. + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + if(s.length>=2) //2015.08.10. + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(s[0]); + p.Flair=s[1]; //2015.08.09. + p.CommentedOnReddit=true; //Kind of + } + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + System.out.println("Auto-flair plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + public static void SaveFiles() //<-- 2015.08.09. + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + public static boolean RemoveLineFromFile(String file, String line) + { //2015.08.09. + File inputFile = new File(file); + File tempFile = new File("_temp.txt"); + + if(!inputFile.exists()) + return true; //2015.08.10. + + try { + BufferedReader reader = new BufferedReader(new FileReader(inputFile)); + BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); + + String lineToRemove = line; + String currentLine; + + while((currentLine = reader.readLine()) != null) { + // trim newline when comparing with lineToRemove + String trimmedLine = currentLine.trim(); + //if(trimmedLine.equals(lineToRemove)) continue; + if(trimmedLine.contains(lineToRemove)) continue; //2015.08.09. + writer.write(currentLine + System.getProperty("line.separator")); + } + writer.close(); + reader.close(); + if(!tempFile.renameTo(inputFile)) + { + inputFile.delete(); + return tempFile.renameTo(inputFile); + } + else + return true; + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + return false; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7/d0a7c5c8ce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/7/d0a7c5c8ce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..752a73d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7/d0a7c5c8ce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,361 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/71/20d5de7b4aa600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/71/20d5de7b4aa600151c15ab42d7919fee new file mode 100644 index 0000000..705d7bd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/71/20d5de7b4aa600151c15ab42d7919fee @@ -0,0 +1,364 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.GetFlairColor() == 0x00 ? 0xb + : mp.GetFlairColor())); // TODO: Quiz queue + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + if (e.getMessage().equalsIgnoreCase("lol")) + Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(e.getPlayer() + .getUniqueId()); + + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/71/b09765e7d13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/71/b09765e7d13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..738511a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/71/b09765e7d13e001518fa86d7ae2a1cf8 @@ -0,0 +1,373 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { + MaybeOfflinePlayer.AllPlayers.clear(); //2015.08.09. + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/73/b05d0d564ca600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/73/b05d0d564ca600151c15ab42d7919fee new file mode 100644 index 0000000..6a13bdf --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/73/b05d0d564ca600151c15ab42d7919fee @@ -0,0 +1,602 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + if (Lastlol != null + && (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/75/200e61c5d03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/75/200e61c5d03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..03f8e7b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/75/200e61c5d03e001518fa86d7ae2a1cf8 @@ -0,0 +1,209 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + } + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/75/20bc5301d13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/75/20bc5301d13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..7e0571a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/75/20bc5301d13e001518fa86d7ae2a1cf8 @@ -0,0 +1,222 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/75/407eccf8d0a500151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/75/407eccf8d0a500151c15ab42d7919fee new file mode 100644 index 0000000..9d8da54 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/75/407eccf8d0a500151c15ab42d7919fee @@ -0,0 +1,89 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + public String FlairTime; + public short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/75/a0acffa2d13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/75/a0acffa2d13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..2b15b31 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/75/a0acffa2d13e001518fa86d7ae2a1cf8 @@ -0,0 +1,368 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) + + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/76/20df8b6f45a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/76/20df8b6f45a600151c15ab42d7919fee new file mode 100644 index 0000000..19558ac --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/76/20df8b6f45a600151c15ab42d7919fee @@ -0,0 +1,117 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(short color) { + FlairColor = color; + SetFlair2(); + } + + public void SetFlairTime(String time) { + FlairTime = time; + SetFlair2(); + } + + public void SetFlair(short color, String time) { + FlairColor = color; + FlairTime = time; + SetFlair2(); + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + Player p = Bukkit.getPlayer(UUID); + p.setPlayerListName(String.Format("%s%s", p.getPlayerListName(), + GetFormattedFlair())); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/76/800c9206d5a500151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/76/800c9206d5a500151c15ab42d7919fee new file mode 100644 index 0000000..7ca9b78 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/76/800c9206d5a500151c15ab42d7919fee @@ -0,0 +1,370 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.FlairColor == 0x00 ? 0xb + : mp.FlairColor)); + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + /* + * Channel c = ((Chat) Bukkit.getPluginManager().getPlugin("TownyChat")) + * .getChannelsHandler().getActiveChannel(e.getPlayer(), + * channelTypes.GLOBAL); + */ + /* + * List modes = ((Chat) Bukkit.getPluginManager().getPlugin( + * "TownyChat")).getTowny().getPlayerMode(e.getPlayer()); if + * (modes.size() == 0 || modes.contains("g")) { + */ + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/76/b054e00b4aa600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/76/b054e00b4aa600151c15ab42d7919fee new file mode 100644 index 0000000..de7ab67 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/76/b054e00b4aa600151c15ab42d7919fee @@ -0,0 +1,603 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/77/10dec4cbce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/77/10dec4cbce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..5908a1d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/77/10dec4cbce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,360 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/78/a0991cb7d13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/78/a0991cb7d13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..2a4b609 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/78/a0991cb7d13e001518fa86d7ae2a1cf8 @@ -0,0 +1,370 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) + { + if(reload) + MaybeOfflinePlayer.AllPlayers.clear(); + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/78/c0c9ec2dd8a500151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/78/c0c9ec2dd8a500151c15ab42d7919fee new file mode 100644 index 0000000..1205b00 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/78/c0c9ec2dd8a500151c15ab42d7919fee @@ -0,0 +1,595 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static boolean PluginUpdated = false; // 2015.08.31. + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) + { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7c/3014764dcd3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/7c/3014764dcd3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..c8a5a26 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7c/3014764dcd3e001518fa86d7ae2a1cf8 @@ -0,0 +1,31 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.HashMap; + +public class MaybeOfflinePlayer +{ //2015.08.08. + public String PlayerName; + public String UserName; + public String Flair; //If the user comments their name, it gets set, it doesn't matter if they accepted it or not + public boolean AcceptedFlair; + public boolean IgnoredFlair; + //public + public static HashMap AllPlayers=new HashMap<>(); //2015.08.08. + public static MaybeOfflinePlayer AddPlayerIfNeeded(String playername) + { + if(!AllPlayers.containsKey(playername)) + { + MaybeOfflinePlayer player=new MaybeOfflinePlayer(); + player.PlayerName=playername; + AllPlayers.put(playername, player); + return player; + } + return AllPlayers.get(playername); + } + public enum FlairClassType + { //2015.08.09. + NonPresser, + CantPress, + Undecided + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7c/a0934f14cf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/7c/a0934f14cf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..ad8a270 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7c/a0934f14cf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,362 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/7d/a005617fd13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/7d/a005617fd13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..dbcf375 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/7d/a005617fd13e001518fa86d7ae2a1cf8 @@ -0,0 +1,363 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/80/2077802d4ba600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/80/2077802d4ba600151c15ab42d7919fee new file mode 100644 index 0000000..706d6e4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/80/2077802d4ba600151c15ab42d7919fee @@ -0,0 +1,603 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + System.out.println("Lastlol: "+Lastlol); + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/80/4075d399d03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/80/4075d399d03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..8abed8b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/80/4075d399d03e001518fa86d7ae2a1cf8 @@ -0,0 +1,206 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/81/b0e3d39bd13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/81/b0e3d39bd13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..81f3985 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/81/b0e3d39bd13e001518fa86d7ae2a1cf8 @@ -0,0 +1,326 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) + { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/82/201f90d5d03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/82/201f90d5d03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..0384150 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/82/201f90d5d03e001518fa86d7ae2a1cf8 @@ -0,0 +1,211 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/82/704f84a1d8a500151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/82/704f84a1d8a500151c15ab42d7919fee new file mode 100644 index 0000000..560d320 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/82/704f84a1d8a500151c15ab42d7919fee @@ -0,0 +1,596 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + if(Lastlol!=null || Bukkit.getPlayer(Lastlol.UUID)) + Lastlol.UUID + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/83/20a1e315cf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/83/20a1e315cf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..72f8cf3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/83/20a1e315cf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,362 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/84/a0c00f13cf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/84/a0c00f13cf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..999a5ae --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/84/a0c00f13cf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,362 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) + { + + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/85/401c3763e640001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/85/401c3763e640001514c09dece48b36c7 new file mode 100644 index 0000000..ee7ab82 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/85/401c3763e640001514c09dece48b36c7 @@ -0,0 +1,73 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0, arg3) + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/86/b01dd91a4ca600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/86/b01dd91a4ca600151c15ab42d7919fee new file mode 100644 index 0000000..405e62a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/86/b01dd91a4ca600151c15ab42d7919fee @@ -0,0 +1,605 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + System.out.println("Unlol command."); + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + System.out.println("Lastlol: " + Lastlol); + System.out.println("Player: " + Bukkit.getPlayer(Lastlol.UUID)); + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/87/30ab730244a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/87/30ab730244a600151c15ab42d7919fee new file mode 100644 index 0000000..d35b442 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/87/30ab730244a600151c15ab42d7919fee @@ -0,0 +1,366 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.FlairColor == 0x00 ? 0xb + : mp.FlairColor)); // TODO: Quiz queue + // TODO: Flairs from Command Block The Button - Teams + PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams() + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + if (e.getMessage().equalsIgnoreCase("lol")) + Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(e.getPlayer() + .getUniqueId()); + + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/8c/a0ea662dcf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/8c/a0ea662dcf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..1213563 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/8c/a0ea662dcf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,362 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/8d/b08d79a849a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/8d/b08d79a849a600151c15ab42d7919fee new file mode 100644 index 0000000..e3db2c7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/8d/b08d79a849a600151c15ab42d7919fee @@ -0,0 +1,125 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(int color) { + FlairColor = (short)color; + SetFlair2(); + } + + public void SetFlairTime(String time) { + FlairTime = time; + SetFlair2(); + } + + public void SetFlair(short color, String time) { + FlairColor = color; + FlairTime = time; + SetFlair2(); + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + Player p = Bukkit.getPlayer(UUID); + p.setPlayerListName(String.format("%s%s", p.getPlayerListName(), + GetFormattedFlair())); + } + + public short GetFlairColor() { + return FlairColor; + } + + public String GetFlairTime() { + return FlairTime; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/8e/80598e6842a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/8e/80598e6842a600151c15ab42d7919fee new file mode 100644 index 0000000..f66decd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/8e/80598e6842a600151c15ab42d7919fee @@ -0,0 +1,604 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/91/c01c0d9ecf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/91/c01c0d9ecf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..a085586 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/91/c01c0d9ecf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,71 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.Flair!=null) + PluginMain.AppendPlayerDisplayFlair(p, mp.UserName, mp.Flair); + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(flair==null || !player.AcceptedFlair) + flair=""; //2015.08.08. + String message=event.getMessage(); //2015.08.08. + /*for(Player p : PluginMain.GetPlayers()) + { //2015.08.08. + message.replaceAll(p.getName(), ) + }*/ + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/93/10f3fc0acf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/93/10f3fc0acf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..a62c891 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/93/10f3fc0acf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,361 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/93/d0f07864d23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/93/d0f07864d23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..f15dd12 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/93/d0f07864d23e001518fa86d7ae2a1cf8 @@ -0,0 +1,376 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + System.out.println("Auto-flair plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/94/2033b6d6d13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/94/2033b6d6d13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..6ac02e4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/94/2033b6d6d13e001518fa86d7ae2a1cf8 @@ -0,0 +1,373 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + System.out.println("Loading files for auto-flair plugin..."); + if(reload) + { + MaybeOfflinePlayer.AllPlayers.clear(); //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/96/20ba5e09d43e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/96/20ba5e09d43e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..6a40e1a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/96/20ba5e09d43e001518fa86d7ae2a1cf8 @@ -0,0 +1,219 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + SendMessage(player, "§6Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done."); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + case "confirm": + DoReload(player); //2015.08.09. + break; + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/97/20ad60e0d03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/97/20ad60e0d03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..4c2bf02 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/97/20ad60e0d03e001518fa86d7ae2a1cf8 @@ -0,0 +1,211 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="" + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/97/a0aae0bdd23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/97/a0aae0bdd23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..229de7d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/97/a0aae0bdd23e001518fa86d7ae2a1cf8 @@ -0,0 +1,223 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Reloaded all files.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/97/c037f44de440001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/97/c037f44de440001514c09dece48b36c7 new file mode 100644 index 0000000..5c4b806 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/97/c037f44de440001514c09dece48b36c7 @@ -0,0 +1,296 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + PluginMain.Console.sendMessage("§6-- Reloading Auto-flair plugin...§r"); + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player)s + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); //2015.08.12. + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/97/c0e2ad6fce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/97/c0e2ad6fce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..28be51a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/97/c0e2ad6fce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,357 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairType=FlairClassType.Undecided; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + public static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/97/f0a3a5f1de40001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/97/f0a3a5f1de40001514c09dece48b36c7 new file mode 100644 index 0000000..a5817c9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/97/f0a3a5f1de40001514c09dece48b36c7 @@ -0,0 +1,297 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§6Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§6Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/98/201af098d03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/98/201af098d03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..f7dee03 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/98/201af098d03e001518fa86d7ae2a1cf8 @@ -0,0 +1,205 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/98/20ac1ac949a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/98/20ac1ac949a600151c15ab42d7919fee new file mode 100644 index 0000000..22c2c98 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/98/20ac1ac949a600151c15ab42d7919fee @@ -0,0 +1,125 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(int color) { + FlairColor = (short) color; + SetFlair2(); + } + + public void SetFlairTime(String time) { + FlairTime = time; + SetFlair2(); + } + + public void SetFlair(short color, String time) { + FlairColor = color; + FlairTime = time; + SetFlair2(); + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + Player p = Bukkit.getPlayer(UUID); + p.setPlayerListName(String.format("%s%s", p.getPlayerListName(), + GetFormattedFlair())); + } + + public short GetFlairColor() { + return FlairColor; + } + + public String GetFlairTime() { + return FlairTime; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9a/90dce6d5ce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/9a/90dce6d5ce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..f48f1b4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9a/90dce6d5ce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,361 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9a/a0aebdacd03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/9a/a0aebdacd03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..8abed8b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9a/a0aebdacd03e001518fa86d7ae2a1cf8 @@ -0,0 +1,206 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9a/e08e32dd2d53001516cdaaef55e27ba4 b/.metadata/.plugins/org.eclipse.core.resources/.history/9a/e08e32dd2d53001516cdaaef55e27ba4 new file mode 100644 index 0000000..9626fec --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9a/e08e32dd2d53001516cdaaef55e27ba4 @@ -0,0 +1,15 @@ +name: TheButtonMCPlugin +main: tk.sznp.thebuttonautoflair.PluginMain +version: 2.0 +commands: + u: + description: Auto-flair system. Accept or ignore flair. + usage: "&cUsage: /u accept|ignore|opme&r" + nrp: + description: Send message in Out-of-Character + usage: "&cUsage: /nrp &r" + ooc: + description: Send message in Out-of-Character + usage: "&cUsage: /ooc &r" +author: NorbiPeti +depend: [Essentials, Towny] diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9c/30bb8899d13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/9c/30bb8899d13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..2e695ac --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9c/30bb8899d13e001518fa86d7ae2a1cf8 @@ -0,0 +1,326 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + Load(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) + { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9c/30e075274ca600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/9c/30e075274ca600151c15ab42d7919fee new file mode 100644 index 0000000..0648957 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9c/30e075274ca600151c15ab42d7919fee @@ -0,0 +1,604 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + System.out.println("Lastlol: " + Lastlol); + System.out.println("Player: " + Bukkit.getPlayer(Lastlol.UUID)); + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/9d/60a4c73b42a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/9d/60a4c73b42a600151c15ab42d7919fee new file mode 100644 index 0000000..016285c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/9d/60a4c73b42a600151c15ab42d7919fee @@ -0,0 +1,604 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + Player p = null; + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a0/30b1eb2c4ba600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/a0/30b1eb2c4ba600151c15ab42d7919fee new file mode 100644 index 0000000..8c52539 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a0/30b1eb2c4ba600151c15ab42d7919fee @@ -0,0 +1,602 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a1/1035b42cd23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/a1/1035b42cd23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..3051444 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a1/1035b42cd23e001518fa86d7ae2a1cf8 @@ -0,0 +1,376 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a1/40b13fdfb94400151637bde96975c236 b/.metadata/.plugins/org.eclipse.core.resources/.history/a1/40b13fdfb94400151637bde96975c236 new file mode 100644 index 0000000..b71fce5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a1/40b13fdfb94400151637bde96975c236 @@ -0,0 +1,7 @@ +name: TheButtonMCPlugin +main: tk.sznp.thebuttonautoflair.PluginMain +version: 2.0 +commands: + u: + description: Auto-flair system and others, like name mentioning + usage: "&cUsage: /u accept|ignore|opme&r" diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a1/a05e6526d23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/a1/a05e6526d23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..7d30f89 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a1/a05e6526d23e001518fa86d7ae2a1cf8 @@ -0,0 +1,375 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a1/b06db16849a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/a1/b06db16849a600151c15ab42d7919fee new file mode 100644 index 0000000..dd1e99c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a1/b06db16849a600151c15ab42d7919fee @@ -0,0 +1,117 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(short color) { + FlairColor = color; + SetFlair2(); + } + + public void SetFlairTime(String time) { + FlairTime = time; + SetFlair2(); + } + + public void SetFlair(short color, String time) { + FlairColor = color; + FlairTime = time; + SetFlair2(); + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + Player p = Bukkit.getPlayer(UUID); + p.setPlayerListName(String.format("%s%s", p.getPlayerListName(), + GetFormattedFlair())); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a2/206c0ba2d23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/a2/206c0ba2d23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..23364ef --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a2/206c0ba2d23e001518fa86d7ae2a1cf8 @@ -0,0 +1,222 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a2/20ecb1f0d03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/a2/20ecb1f0d03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..41fefc9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a2/20ecb1f0d03e001518fa86d7ae2a1cf8 @@ -0,0 +1,211 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a3/b08191454ba600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/a3/b08191454ba600151c15ab42d7919fee new file mode 100644 index 0000000..4d2b5cb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a3/b08191454ba600151c15ab42d7919fee @@ -0,0 +1,604 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + System.out.println("Lastlol: " + Lastlol); + System.out.println("Player: " + Bukkit.getPlayer(Lastlol.UUID))); + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a4/a0f428a3d33e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/a4/a0f428a3d33e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..72b38bc --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a4/a0f428a3d33e001518fa86d7ae2a1cf8 @@ -0,0 +1,219 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + case "confirm": + DoReload(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a5/102ab363e640001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/a5/102ab363e640001514c09dece48b36c7 new file mode 100644 index 0000000..06ce0fb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a5/102ab363e640001514c09dece48b36c7 @@ -0,0 +1,73 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0, 1.0) + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/a8/4016faaee240001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/a8/4016faaee240001514c09dece48b36c7 new file mode 100644 index 0000000..f1e321a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/a8/4016faaee240001514c09dece48b36c7 @@ -0,0 +1,299 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); //2015.08.12. + else + player.sendMessage(message); + + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/aa/a076f09ad33e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/aa/a076f09ad33e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..cb3725d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/aa/a076f09ad33e001518fa86d7ae2a1cf8 @@ -0,0 +1,218 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + case "confirm": + break; + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ab/c07bf623e640001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/ab/c07bf623e640001514c09dece48b36c7 new file mode 100644 index 0000000..7c5cf6b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ab/c07bf623e640001514c09dece48b36c7 @@ -0,0 +1,72 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + p.playSound(p.getLocation(), arg1, arg2, arg3) + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ab/c0cfe25644a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/ab/c0cfe25644a600151c15ab42d7919fee new file mode 100644 index 0000000..e510459 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ab/c0cfe25644a600151c15ab42d7919fee @@ -0,0 +1,367 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.FlairColor == 0x00 ? 0xb + : mp.FlairColor)); // TODO: Quiz queue + // TODO: Flairs from Command Block The Button - Teams + for(int i=0; i<=60; i++) + PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + if (e.getMessage().equalsIgnoreCase("lol")) + Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(e.getPlayer() + .getUniqueId()); + + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ac/50a4ecaae240001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/ac/50a4ecaae240001514c09dece48b36c7 new file mode 100644 index 0000000..e8643bd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ac/50a4ecaae240001514c09dece48b36c7 @@ -0,0 +1,298 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ad/60b39408d43e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/ad/60b39408d43e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..05f66ff --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ad/60b39408d43e001518fa86d7ae2a1cf8 @@ -0,0 +1,220 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + SendMessage(player, "§6Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done."); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + case "confirm": + DoReload(player); //2015.08.09. + break; + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ad/b067a2dd2d53001516cdaaef55e27ba4 b/.metadata/.plugins/org.eclipse.core.resources/.history/ad/b067a2dd2d53001516cdaaef55e27ba4 new file mode 100644 index 0000000..9626fec --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ad/b067a2dd2d53001516cdaaef55e27ba4 @@ -0,0 +1,15 @@ +name: TheButtonMCPlugin +main: tk.sznp.thebuttonautoflair.PluginMain +version: 2.0 +commands: + u: + description: Auto-flair system. Accept or ignore flair. + usage: "&cUsage: /u accept|ignore|opme&r" + nrp: + description: Send message in Out-of-Character + usage: "&cUsage: /nrp &r" + ooc: + description: Send message in Out-of-Character + usage: "&cUsage: /ooc &r" +author: NorbiPeti +depend: [Essentials, Towny] diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ad/c0954ebcce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/ad/c0954ebcce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..2284d68 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ad/c0954ebcce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,361 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + public static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ad/e01e43fdde40001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/ad/e01e43fdde40001514c09dece48b36c7 new file mode 100644 index 0000000..9bf1e2e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ad/e01e43fdde40001514c09dece48b36c7 @@ -0,0 +1,297 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§6Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§6Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ae/00c863dc41a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/ae/00c863dc41a600151c15ab42d7919fee new file mode 100644 index 0000000..5810a0c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ae/00c863dc41a600151c15ab42d7919fee @@ -0,0 +1,603 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + Player p = null; + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ae/1023a9f9cc3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/ae/1023a9f9cc3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..21abae7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ae/1023a9f9cc3e001518fa86d7ae2a1cf8 @@ -0,0 +1,194 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ae/d01c7740e340001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/ae/d01c7740e340001514c09dece48b36c7 new file mode 100644 index 0000000..233a816 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ae/d01c7740e340001514c09dece48b36c7 @@ -0,0 +1,295 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + PluginMain.Console.sendMessage("§6-- Reloading Auto-flair plugin..."); + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); //2015.08.12. + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b/301da326cd3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/b/301da326cd3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..3d05e25 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b/301da326cd3e001518fa86d7ae2a1cf8 @@ -0,0 +1,25 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.HashMap; + +public class MaybeOfflinePlayer +{ //2015.08.08. + public String PlayerName; + public String UserName; + public String Flair; //If the user comments their name, it gets set, it doesn't matter if they accepted it or not + public boolean AcceptedFlair; + public boolean IgnoredFlair; + public + public static HashMap AllPlayers=new HashMap<>(); //2015.08.08. + public static MaybeOfflinePlayer AddPlayerIfNeeded(String playername) + { + if(!AllPlayers.containsKey(playername)) + { + MaybeOfflinePlayer player=new MaybeOfflinePlayer(); + player.PlayerName=playername; + AllPlayers.put(playername, player); + return player; + } + return AllPlayers.get(playername); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b1/20248930cd3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/b1/20248930cd3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..a73501d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b1/20248930cd3e001518fa86d7ae2a1cf8 @@ -0,0 +1,25 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.HashMap; + +public class MaybeOfflinePlayer +{ //2015.08.08. + public String PlayerName; + public String UserName; + public String Flair; //If the user comments their name, it gets set, it doesn't matter if they accepted it or not + public boolean AcceptedFlair; + public boolean IgnoredFlair; + //public + public static HashMap AllPlayers=new HashMap<>(); //2015.08.08. + public static MaybeOfflinePlayer AddPlayerIfNeeded(String playername) + { + if(!AllPlayers.containsKey(playername)) + { + MaybeOfflinePlayer player=new MaybeOfflinePlayer(); + player.PlayerName=playername; + AllPlayers.put(playername, player); + return player; + } + return AllPlayers.get(playername); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b1/30440676d03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/b1/30440676d03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..c6af7c6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b1/30440676d03e001518fa86d7ae2a1cf8 @@ -0,0 +1,201 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b3/100a9853d43e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/b3/100a9853d43e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..9a2577a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b3/100a9853d43e001518fa86d7ae2a1cf8 @@ -0,0 +1,224 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§6Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + case "confirm": + if(ReloadPlayer.equals(player)) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b3/309b60224ca600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/b3/309b60224ca600151c15ab42d7919fee new file mode 100644 index 0000000..0648957 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b3/309b60224ca600151c15ab42d7919fee @@ -0,0 +1,604 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + System.out.println("Lastlol: " + Lastlol); + System.out.println("Player: " + Bukkit.getPlayer(Lastlol.UUID)); + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b3/a04fb97a44a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/b3/a04fb97a44a600151c15ab42d7919fee new file mode 100644 index 0000000..25e3bf6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b3/a04fb97a44a600151c15ab42d7919fee @@ -0,0 +1,364 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.FlairColor == 0x00 ? 0xb + : mp.FlairColor)); // TODO: Quiz queue + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + if (e.getMessage().equalsIgnoreCase("lol")) + Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(e.getPlayer() + .getUniqueId()); + + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b3/c04f9e03ce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/b3/c04f9e03ce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..68717ab --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b3/c04f9e03ce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,354 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + String finalflair; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided":; //2015.08.09. + finalflair="" + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + public static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b3/f0d62592e540001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/b3/f0d62592e540001514c09dece48b36c7 new file mode 100644 index 0000000..1ac0551 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b3/f0d62592e540001514c09dece48b36c7 @@ -0,0 +1,72 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + p.sendMessage() + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b5/00f67dc54ca600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/b5/00f67dc54ca600151c15ab42d7919fee new file mode 100644 index 0000000..21e1a87 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b5/00f67dc54ca600151c15ab42d7919fee @@ -0,0 +1,602 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + if (Lastlol != null + && (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, true, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b5/202ce194d13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/b5/202ce194d13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..2e695ac --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b5/202ce194d13e001518fa86d7ae2a1cf8 @@ -0,0 +1,326 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + Load(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) + { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b5/20cff1fb49a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/b5/20cff1fb49a600151c15ab42d7919fee new file mode 100644 index 0000000..1ece9ce --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b5/20cff1fb49a600151c15ab42d7919fee @@ -0,0 +1,604 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b5/40ecd766ce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/b5/40ecd766ce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..39e5134 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b5/40ecd766ce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,31 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.HashMap; + +public class MaybeOfflinePlayer +{ //2015.08.08. + public String PlayerName; + public String UserName; + public String Flair; //If the user comments their name, it gets set, it doesn't matter if they accepted it or not + public boolean AcceptedFlair; + public boolean IgnoredFlair; + public boolean FlairSet; //2015.08.09. + public static HashMap AllPlayers=new HashMap<>(); //2015.08.08. + public static MaybeOfflinePlayer AddPlayerIfNeeded(String playername) + { + if(!AllPlayers.containsKey(playername)) + { + MaybeOfflinePlayer player=new MaybeOfflinePlayer(); + player.PlayerName=playername; + AllPlayers.put(playername, player); + return player; + } + return AllPlayers.get(playername); + } + /*public enum FlairClassType + { //2015.08.09. + NonPresser, + CantPress, + Undecided + }*/ +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b5/b00008cc4ca600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/b5/b00008cc4ca600151c15ab42d7919fee new file mode 100644 index 0000000..0516444 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b5/b00008cc4ca600151c15ab42d7919fee @@ -0,0 +1,602 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + if (Lastlol != null + && (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10 * 20, 5, true, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b6/20667af5cf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/b6/20667af5cf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..eab3194 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b6/20667af5cf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,197 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b6/20b982994aa600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/b6/20b982994aa600151c15ab42d7919fee new file mode 100644 index 0000000..0e44c25 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b6/20b982994aa600151c15ab42d7919fee @@ -0,0 +1,366 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + + mp.SetFlairColor(mp.GetFlairColor()); + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.GetFlairColor() == 0x00 ? 0xb + : mp.GetFlairColor())); // TODO: Quiz queue + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + if (e.getMessage().equalsIgnoreCase("lol")) + Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(e.getPlayer() + .getUniqueId()); + + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b7/20f6378ed03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/b7/20f6378ed03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..d6e50b3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b7/20f6378ed03e001518fa86d7ae2a1cf8 @@ -0,0 +1,204 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + } + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b7/80013692d8a500151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/b7/80013692d8a500151c15ab42d7919fee new file mode 100644 index 0000000..e2bd812 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b7/80013692d8a500151c15ab42d7919fee @@ -0,0 +1,595 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b7/b0476c2b4ca600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/b7/b0476c2b4ca600151c15ab42d7919fee new file mode 100644 index 0000000..7aaa8dd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b7/b0476c2b4ca600151c15ab42d7919fee @@ -0,0 +1,603 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + System.out.println("Player: " + Bukkit.getPlayer(Lastlol.UUID)); + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b7/b048b351cd3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/b7/b048b351cd3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..4b9e4c5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b7/b048b351cd3e001518fa86d7ae2a1cf8 @@ -0,0 +1,31 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.HashMap; + +public class MaybeOfflinePlayer +{ //2015.08.08. + public String PlayerName; + public String UserName; + public String Flair; //If the user comments their name, it gets set, it doesn't matter if they accepted it or not + public boolean AcceptedFlair; + public boolean IgnoredFlair; + public FlairClassType FlairType; + public static HashMap AllPlayers=new HashMap<>(); //2015.08.08. + public static MaybeOfflinePlayer AddPlayerIfNeeded(String playername) + { + if(!AllPlayers.containsKey(playername)) + { + MaybeOfflinePlayer player=new MaybeOfflinePlayer(); + player.PlayerName=playername; + AllPlayers.put(playername, player); + return player; + } + return AllPlayers.get(playername); + } + public enum FlairClassType + { //2015.08.09. + NonPresser, + CantPress, + Undecided + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b8/b0ca9a4a49a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/b8/b0ca9a4a49a600151c15ab42d7919fee new file mode 100644 index 0000000..f66decd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b8/b0ca9a4a49a600151c15ab42d7919fee @@ -0,0 +1,604 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/b9/c0ad8e3ee340001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/b9/c0ad8e3ee340001514c09dece48b36c7 new file mode 100644 index 0000000..04a669a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/b9/c0ad8e3ee340001514c09dece48b36c7 @@ -0,0 +1,294 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); //2015.08.12. + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bb/708754aee240001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/bb/708754aee240001514c09dece48b36c7 new file mode 100644 index 0000000..4f33dd3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bb/708754aee240001514c09dece48b36c7 @@ -0,0 +1,298 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); //2015.08.12. + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bc/30916f57cf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/bc/30916f57cf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..262b029 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bc/30916f57cf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,362 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bc/a0204038ce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/bc/a0204038ce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..d838749 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bc/a0204038ce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,355 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + public static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bc/a099c9afd13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/bc/a099c9afd13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..3926be9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bc/a099c9afd13e001518fa86d7ae2a1cf8 @@ -0,0 +1,368 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) + { + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bd/301fea5849a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/bd/301fea5849a600151c15ab42d7919fee new file mode 100644 index 0000000..25e3bf6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bd/301fea5849a600151c15ab42d7919fee @@ -0,0 +1,364 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.FlairColor == 0x00 ? 0xb + : mp.FlairColor)); // TODO: Quiz queue + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + if (e.getMessage().equalsIgnoreCase("lol")) + Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(e.getPlayer() + .getUniqueId()); + + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bf/a056849fd33e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/bf/a056849fd33e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..ef4123d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bf/a056849fd33e001518fa86d7ae2a1cf8 @@ -0,0 +1,219 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + case "confirm": + + break; + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bf/a0d1b862cf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/bf/a0d1b862cf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..0fdd3aa --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bf/a0d1b862cf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,364 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press?§r"); //2015.08.09. + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bf/b097a02e4ca600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/bf/b097a02e4ca600151c15ab42d7919fee new file mode 100644 index 0000000..1330a76 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bf/b097a02e4ca600151c15ab42d7919fee @@ -0,0 +1,603 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + System.out.println("Player: " + Bukkit.getPlayer(Lastlol.UUID)); + if (Lastlol != null + && (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/bf/b0a27d3d4ba600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/bf/b0a27d3d4ba600151c15ab42d7919fee new file mode 100644 index 0000000..a0f7085 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/bf/b0a27d3d4ba600151c15ab42d7919fee @@ -0,0 +1,604 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + System.out.println("Lastlol: " + Lastlol); + System.out.println("Lastlol: " + Lastlol); + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c/b06ccd99ce3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/c/b06ccd99ce3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..4e85b74 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c/b06ccd99ce3e001518fa86d7ae2a1cf8 @@ -0,0 +1,358 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + { + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(player.getName()).AcceptedFlair) + AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + public static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c2/20d96d9ad33e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/c2/20d96d9ad33e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..843f877 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c2/20d96d9ad33e001518fa86d7ae2a1cf8 @@ -0,0 +1,216 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + //String msg="§6Reloaded config file.§r"; + //SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c3/40771d08e740001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/c3/40771d08e740001514c09dece48b36c7 new file mode 100644 index 0000000..152043a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c3/40771d08e740001514c09dece48b36c7 @@ -0,0 +1,74 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + if(message.contains(p.getName())) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 1.0f); //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c4/b016f69349a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/c4/b016f69349a600151c15ab42d7919fee new file mode 100644 index 0000000..7d0ffa7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c4/b016f69349a600151c15ab42d7919fee @@ -0,0 +1,355 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.IOUtils; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.htmlcleaner.HtmlCleaner; +import org.htmlcleaner.TagNode; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.*; +import java.lang.String; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLConnection; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.TimeZone; + +public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15. + // A user, which flair isn't obtainable: + // https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + public static PluginMain Instance; + public static ConsoleCommandSender Console; // 2015.08.12. + + // Fired when plugin is first enabled + @Override + public void onEnable() { + try { + System.out.println("Extracting necessary libraries..."); + final File[] libs = new File[] { new File(getDataFolder(), + "htmlcleaner-2.16.jar") }; + for (final File lib : libs) { + if (!lib.exists()) { + JarUtils.extractFromJar(lib.getName(), + lib.getAbsolutePath()); + } + } + for (final File lib : libs) { + if (!lib.exists()) { + getLogger().warning( + "Failed to load plugin! Could not find lib: " + + lib.getName()); + Bukkit.getServer().getPluginManager().disablePlugin(this); + return; + } + addClassPath(JarUtils.getJarUrl(lib)); + } + } catch (final Exception e) { + e.printStackTrace(); + } + + getServer().getPluginManager().registerEvents(new PlayerListener(), + this); + Commands comm = new Commands(); + this.getCommand("u").setExecutor(comm); + this.getCommand("u").setUsage( + this.getCommand("u").getUsage().replace('&', '§')); + this.getCommand("nrp").setExecutor(comm); + this.getCommand("nrp").setUsage( + this.getCommand("nrp").getUsage().replace('&', '§')); + this.getCommand("ooc").setExecutor(comm); + this.getCommand("ooc").setUsage( + this.getCommand("ooc").getUsage().replace('&', '§')); + Instance = this; // 2015.08.08. + Console = this.getServer().getConsoleSender(); // 2015.08.12. + LoadFiles(false); // 2015.08.09. + Runnable r = new Runnable() { + public void run() { + ThreadMethod(); + } + }; + Thread t = new Thread(r); + t.start(); + r = new Runnable() { + public void run() { + AnnouncerThread.Run(); + } + }; + t = new Thread(r); + t.start(); + } + + public Boolean stop = false; + + // Fired when plugin is disabled + @Override + public void onDisable() { + SaveFiles(); // 2015.08.09. + stop = true; + } + + private void ThreadMethod() { + while (!stop) { + try { + String body = DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json = new JSONArray(body).getJSONObject(1) + .getJSONObject("data").getJSONArray("children"); + for (Object obj : json) { + JSONObject item = (JSONObject) obj; + String author = item.getJSONObject("data").getString( + "author"); + String ign = item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + if (start == -1 + "IGN:".length()) // +length: 2015.08.10. + continue; // 2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end = ign.indexOf('\n', start); // 2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.GetFromName(ign); + if (mp == null) + continue; + if (!mp.UserNames.contains(author)) + mp.UserNames.add(author); + if (mp.FlairState.equals(FlairStates.NoComment)) { + mp.FlairState = FlairStates.Commented; + ConfirmUserMessage(mp); + } + try { + Thread.sleep(10); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } + try { + Thread.sleep(10000); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + // System.out.println("Error!\n" + e); + LastException = e; // 2015.08.09. + } + } + } + + public void DownloadFlair(MaybeOfflinePlayer mp) + throws MalformedURLException, IOException { + String[] flairdata = DownloadString( + "http://karmadecay.com/thebutton-data.php?users=" + mp.UserName) + .replace("\"", "").split(":"); + String flair; + if (flairdata.length > 1) + flair = flairdata[1]; + else + flair = ""; + String flairclass; + if (flairdata.length > 2) + flairclass = flairdata[2]; + else + flairclass = "unknown"; + SetFlair(mp, flair, flairclass, mp.UserName); + } + + public static Exception LastException; // 2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, + IOException { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + private void SetFlair(MaybeOfflinePlayer p, String text, String flairclass, + String username) { + p.UserName = username; + p.FlairState = FlairStates.Recognised; + switch (flairclass) { + case "press-1": + p.SetFlairColor(0xc); + break; + case "press-2": + p.FlairColor = 0x6; + break; + case "press-3": + p.FlairColor = 0xe; + break; + case "press-4": + p.FlairColor = 0xa; + break; + case "press-5": + p.FlairColor = 0x9; + break; + case "press-6": + p.FlairColor = 0x5; + break; + case "no-press": + p.FlairColor = 0x7; + break; + case "cheater": + p.FlairColor = 0x5; + break; + case "cant-press": + p.FlairColor = 0xf; + break; + case "unknown": + if (text.equals("-1")) // If true, only non-presser/can't press; if + // false, any flair + { + try { + if (CheckForJoinDate(p)) { + p.FlairColor = 0x7; + p.FlairTime = "--"; + } else { + p.FlairColor = 0xf; + p.FlairTime = "--"; + } + } catch (Exception e) { + p.FlairState = FlairStates.Commented; // Flair unknown + p.FlairColor = 0; + e.printStackTrace(); + } + } else { + p.FlairState = FlairStates.Commented; // Flair unknown + p.FlairColor = 0; + } + return; + default: + return; + } + if (text.equals("-1")) + text = "--"; + p.FlairTime = text; + } + + public static boolean CheckForJoinDate(MaybeOfflinePlayer mp) + throws Exception { + URL url = new URL("https://www.reddit.com/u/" + mp.UserName); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + HtmlCleaner cleaner = new HtmlCleaner(); + TagNode node = cleaner.clean(in); + + node = node.getElementsByAttValue("class", "age", true, true)[0]; + node = node.getElementsByName("time", false)[0]; + String joindate = node.getAttributeByName("datetime"); + SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd"); + joindate = joindate.split("T")[0]; + Date date = parserSDF.parse(joindate); + return date.before(new Calendar.Builder() + .setTimeZone(TimeZone.getTimeZone("UTC")).setDate(2015, 4, 1) + .build().getTime()); + } + + public static void ConfirmUserMessage(MaybeOfflinePlayer mp) { + Player p = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented) && p != null) + if (mp.UserNames.size() > 1) + p.sendMessage("§9Multiple Reddit users commented your name. You can select with /u accept.§r §6Type /u accept or /u ignore§r"); + else + p.sendMessage("§9A Reddit user commented your name. Is that you?§r §6Type /u accept or /u ignore§r"); + } + + public static Collection GetPlayers() { + return Instance.getServer().getOnlinePlayers(); + } + + public static ArrayList AnnounceMessages = new ArrayList<>(); + public static int AnnounceTime = 15 * 60 * 1000; + + public static void LoadFiles(boolean reload) { + if (reload) { + System.out + .println("The Button Minecraft plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + AnnounceMessages.clear(); + } + System.out.println("Loading files for The Button Minecraft plugin..."); + try { + File file = new File("announcemessages.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsaccepted.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsignored.txt"); + if (file.exists()) + file.delete(); + file = new File("thebuttonmc.yml"); + if (file.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + yc.load(file); + MaybeOfflinePlayer.Load(yc); + PlayerListener.NotificationSound = yc + .getString("notificationsound"); + PlayerListener.NotificationPitch = yc + .getDouble("notificationpitch"); + AnnounceTime = yc.getInt("announcetime"); + AnnounceMessages.addAll(yc.getStringList("announcements")); + } + System.out.println("The Button Minecraft plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } catch (InvalidConfigurationException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + public static void SaveFiles() { + System.out.println("Saving files for The Button Minecraft plugin..."); + try { + File file = new File("thebuttonmc.yml"); + YamlConfiguration yc = new YamlConfiguration(); + MaybeOfflinePlayer.Save(yc); + yc.set("notificationsound", PlayerListener.NotificationSound); + yc.set("notificationpitch", PlayerListener.NotificationPitch); + yc.set("announcetime", AnnounceTime); + yc.set("announcements", AnnounceMessages); + yc.save(file); + System.out.println("The Button Minecraft plugin saved files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + private void addClassPath(final URL url) throws IOException { + final URLClassLoader sysloader = (URLClassLoader) ClassLoader + .getSystemClassLoader(); + final Class sysclass = URLClassLoader.class; + try { + final Method method = sysclass.getDeclaredMethod("addURL", + new Class[] { URL.class }); + method.setAccessible(true); + method.invoke(sysloader, new Object[] { url }); + } catch (final Throwable t) { + t.printStackTrace(); + throw new IOException("Error adding " + url + + " to system classloader"); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c5/30315643d03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/c5/30315643d03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..a8dea0e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c5/30315643d03e001518fa86d7ae2a1cf8 @@ -0,0 +1,198 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/c5/a03d9d1145a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/c5/a03d9d1145a600151c15ab42d7919fee new file mode 100644 index 0000000..201a69c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/c5/a03d9d1145a600151c15ab42d7919fee @@ -0,0 +1,109 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(short color) { + FlairColor = color; + } + + public void SetFlairTime(String time) { + FlairTime = time; + } + + public void SetFlair(short color, String time) { + + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + event.getPlayer().setPlayerListName(""); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ca/60051534d8a500151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/ca/60051534d8a500151c15ab42d7919fee new file mode 100644 index 0000000..36790ac --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ca/60051534d8a500151c15ab42d7919fee @@ -0,0 +1,596 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static boolean PluginUpdated = false; // 2015.08.31. + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) + { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/cc/b08607c4d23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/cc/b08607c4d23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..5d7321f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/cc/b08607c4d23e001518fa86d7ae2a1cf8 @@ -0,0 +1,215 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Reloaded all files.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/cd/90837b3cd23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/cd/90837b3cd23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..e95109b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/cd/90837b3cd23e001518fa86d7ae2a1cf8 @@ -0,0 +1,377 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + System.out.println("Auto-flair plugin loaded files!"); + + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d/40ebea47e340001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/d/40ebea47e340001514c09dece48b36c7 new file mode 100644 index 0000000..c4760e2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d/40ebea47e340001514c09dece48b36c7 @@ -0,0 +1,296 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + PluginMain.Console.sendMessage("§6-- Reloading Auto-flair plugin...§r"); + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading Auto-flair plugin...§r"); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); //2015.08.12. + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d0/405b2dafe240001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/405b2dafe240001514c09dece48b36c7 new file mode 100644 index 0000000..4f33dd3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/405b2dafe240001514c09dece48b36c7 @@ -0,0 +1,298 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); //2015.08.12. + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d0/d0f74b8de640001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/d0f74b8de640001514c09dece48b36c7 new file mode 100644 index 0000000..cbc9ea1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/d0f74b8de640001514c09dece48b36c7 @@ -0,0 +1,73 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 1.0f); //2015.08.12. + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d0/f0f48766e640001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/f0f48766e640001514c09dece48b36c7 new file mode 100644 index 0000000..89930f8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d0/f0f48766e640001514c09dece48b36c7 @@ -0,0 +1,73 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0, 1.0); + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d2/204ad69bd03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/d2/204ad69bd03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..331b6b5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d2/204ad69bd03e001518fa86d7ae2a1cf8 @@ -0,0 +1,206 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + w + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d2/505b5f5e45a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/d2/505b5f5e45a600151c15ab42d7919fee new file mode 100644 index 0000000..27ffbef --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d2/505b5f5e45a600151c15ab42d7919fee @@ -0,0 +1,115 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(short color) { + FlairColor = color; + SetFlair2(); + } + + public void SetFlairTime(String time) { + FlairTime = time; + SetFlair2(); + } + + public void SetFlair(short color, String time) { + FlairColor = color; + FlairTime = time; + SetFlair2(); + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + Player p=Bukkit.getPlayer(UUID); + p.setPlayerListName(String.Format("%s%s", )); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d2/50685e70e240001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/d2/50685e70e240001514c09dece48b36c7 new file mode 100644 index 0000000..a8534f3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d2/50685e70e240001514c09dece48b36c7 @@ -0,0 +1,453 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + public static ConsoleCommandSender Console; //2015.08.12. + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + Console=this.getServer().getConsoleSender(); + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + SaveFiles(); //2015.08.09. + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + //System.out.println("Start: "+start); + if(start==-1+"IGN:".length()) //+length: 2015.08.10. + continue; //2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + //System.out.println("End: "+end); + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + //System.out.println("IGN: "+ign); + ign = ign.trim(); + //System.out.println("Trimmed IGN: "+ign); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + /*else + flair = "non-presser";*/ + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + //return p.Flair!=null; //2015.08.08. + return p.CommentedOnReddit; //2015.08.10. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + p.FlairRecognised=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(--s)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(??s)§r"; + break; + case "unknown": + if(text.equals("-1")) //If true, only non-presser/can't press; if false, any flair + p.FlairDecided=false; + else + p.FlairRecognised=false; + finalflair=""; + break; + default: + //finalflair=""; + //break; + return; + } + /*if(finalflair.length()==0) //<-- 2015.07.20. + return;*/ + p.Flair=finalflair; //2015.08.08. + p.CommentedOnReddit=true; //2015.08.10. + p.UserName=username; //2015.08.08. + if(finalflair.length()==0) //Just for the message + finalflair="undecided"; + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + //return flair==null ? "" : flair; + return flair; //2015.08.10. + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + //AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + /*private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + *String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + if(s.length>=2) //<-- 2015.08.10. + TownColors.put(s[0], s[1]); + } + br.close(); + } + file=new File("customflairs.txt"); //2015.08.09. + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + if(s.length>=2) //2015.08.10. + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(s[0]); + p.Flair=s[1]; //2015.08.09. + p.CommentedOnReddit=true; //Kind of + } + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + System.out.println("Auto-flair plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + public static void SaveFiles() //<-- 2015.08.09. + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + public static boolean RemoveLineFromFile(String file, String line) + { //2015.08.09. + File inputFile = new File(file); + File tempFile = new File("_temp.txt"); + + if(!inputFile.exists()) + return true; //2015.08.10. + + try { + BufferedReader reader = new BufferedReader(new FileReader(inputFile)); + BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); + + String lineToRemove = line; + String currentLine; + + while((currentLine = reader.readLine()) != null) { + // trim newline when comparing with lineToRemove + String trimmedLine = currentLine.trim(); + //if(trimmedLine.equals(lineToRemove)) continue; + if(trimmedLine.contains(lineToRemove)) continue; //2015.08.09. + writer.write(currentLine + System.getProperty("line.separator")); + } + writer.close(); + reader.close(); + if(!tempFile.renameTo(inputFile)) + { + inputFile.delete(); + return tempFile.renameTo(inputFile); + } + else + return true; + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + return false; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d4/b0b5a2a749a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/d4/b0b5a2a749a600151c15ab42d7919fee new file mode 100644 index 0000000..36262d8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d4/b0b5a2a749a600151c15ab42d7919fee @@ -0,0 +1,125 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(int color) { + FlairColor = color; + SetFlair2(); + } + + public void SetFlairTime(String time) { + FlairTime = time; + SetFlair2(); + } + + public void SetFlair(short color, String time) { + FlairColor = color; + FlairTime = time; + SetFlair2(); + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + Player p = Bukkit.getPlayer(UUID); + p.setPlayerListName(String.format("%s%s", p.getPlayerListName(), + GetFormattedFlair())); + } + + public short GetFlairColor() { + return FlairColor; + } + + public String GetFlairTime() { + return FlairTime; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d5/d0e71dc1e140001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/d5/d0e71dc1e140001514c09dece48b36c7 new file mode 100644 index 0000000..e68eaa6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d5/d0e71dc1e140001514c09dece48b36c7 @@ -0,0 +1,450 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + SaveFiles(); //2015.08.09. + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + //System.out.println("Start: "+start); + if(start==-1+"IGN:".length()) //+length: 2015.08.10. + continue; //2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + //System.out.println("End: "+end); + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + //System.out.println("IGN: "+ign); + ign = ign.trim(); + //System.out.println("Trimmed IGN: "+ign); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + /*else + flair = "non-presser";*/ + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + //return p.Flair!=null; //2015.08.08. + return p.CommentedOnReddit; //2015.08.10. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + p.FlairRecognised=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(--s)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(??s)§r"; + break; + case "unknown": + if(text.equals("-1")) //If true, only non-presser/can't press; if false, any flair + p.FlairDecided=false; + else + p.FlairRecognised=false; + finalflair=""; + break; + default: + //finalflair=""; + //break; + return; + } + /*if(finalflair.length()==0) //<-- 2015.07.20. + return;*/ + p.Flair=finalflair; //2015.08.08. + p.CommentedOnReddit=true; //2015.08.10. + p.UserName=username; //2015.08.08. + if(finalflair.length()==0) //Just for the message + finalflair="undecided"; + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + //return flair==null ? "" : flair; + return flair; //2015.08.10. + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + //AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + /*private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + *String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + if(s.length>=2) //<-- 2015.08.10. + TownColors.put(s[0], s[1]); + } + br.close(); + } + file=new File("customflairs.txt"); //2015.08.09. + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + if(s.length>=2) //2015.08.10. + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(s[0]); + p.Flair=s[1]; //2015.08.09. + p.CommentedOnReddit=true; //Kind of + } + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + System.out.println("Auto-flair plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + public static void SaveFiles() //<-- 2015.08.09. + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + public static boolean RemoveLineFromFile(String file, String line) + { //2015.08.09. + File inputFile = new File(file); + File tempFile = new File("_temp.txt"); + + if(!inputFile.exists()) + return true; //2015.08.10. + + try { + BufferedReader reader = new BufferedReader(new FileReader(inputFile)); + BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); + + String lineToRemove = line; + String currentLine; + + while((currentLine = reader.readLine()) != null) { + // trim newline when comparing with lineToRemove + String trimmedLine = currentLine.trim(); + //if(trimmedLine.equals(lineToRemove)) continue; + if(trimmedLine.contains(lineToRemove)) continue; //2015.08.09. + writer.write(currentLine + System.getProperty("line.separator")); + } + writer.close(); + reader.close(); + if(!tempFile.renameTo(inputFile)) + { + inputFile.delete(); + return tempFile.renameTo(inputFile); + } + else + return true; + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + return false; + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d6/2061743542a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/d6/2061743542a600151c15ab42d7919fee new file mode 100644 index 0000000..c6c4f2e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d6/2061743542a600151c15ab42d7919fee @@ -0,0 +1,364 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.FlairColor == 0x00 ? 0xb + : mp.FlairColor)); // TODO: Quiz queue + // TODO: Flairs from Command Block The Button - Teams + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + if (e.getMessage().equalsIgnoreCase("lol")) + Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(e.getPlayer().getUniqueId()); + + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d6/a08b7a0ed03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/d6/a08b7a0ed03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..5d70e40 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d6/a08b7a0ed03e001518fa86d7ae2a1cf8 @@ -0,0 +1,198 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d7/a0f61d9bd03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/d7/a0f61d9bd03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..8abed8b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d7/a0f61d9bd03e001518fa86d7ae2a1cf8 @@ -0,0 +1,206 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/d8/4044c9a7e240001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/d8/4044c9a7e240001514c09dece48b36c7 new file mode 100644 index 0000000..975702f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/d8/4044c9a7e240001514c09dece48b36c7 @@ -0,0 +1,297 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/da/a0d614ced03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/da/a0d614ced03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..a8b8f80 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/da/a0d614ced03e001518fa86d7ae2a1cf8 @@ -0,0 +1,210 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/db/50afb721e640001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/db/50afb721e640001514c09dece48b36c7 new file mode 100644 index 0000000..d9ec7da --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/db/50afb721e640001514c09dece48b36c7 @@ -0,0 +1,72 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message = message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + p.playSound(arg0, arg1, arg2, arg3) + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e/a0795133d23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/e/a0795133d23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..be2f453 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e/a0795133d23e001518fa86d7ae2a1cf8 @@ -0,0 +1,376 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + System.out.println("Auto-flair plugin loaded!"); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e/d03a30e844a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/e/d03a30e844a600151c15ab42d7919fee new file mode 100644 index 0000000..15d37e7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e/d03a30e844a600151c15ab42d7919fee @@ -0,0 +1,107 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(short color) + { + + } + + public void SetFlairTime(String time) + { + + } + + public void SetFlair(short color, String time) + + // TODO: Flairs from Command Block The Button - Teams + //PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + event.getPlayer().setPlayerListName(""); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e0/a07905a5cf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/e0/a07905a5cf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..d0c7fdd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e0/a07905a5cf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,71 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.Flair!=null) + PluginMain.AppendPlayerDisplayFlair(mp, p); + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(flair==null || !player.AcceptedFlair) + flair=""; //2015.08.08. + String message=event.getMessage(); //2015.08.08. + /*for(Player p : PluginMain.GetPlayers()) + { //2015.08.08. + message.replaceAll(p.getName(), ) + }*/ + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e3/20517c59cf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/e3/20517c59cf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..77a24f3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e3/20517c59cf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,364 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press?§r"); + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e3/d0df3dbadf40001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/e3/d0df3dbadf40001514c09dece48b36c7 new file mode 100644 index 0000000..e614358 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e3/d0df3dbadf40001514c09dece48b36c7 @@ -0,0 +1,71 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.CommentedOnReddit) + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your §6Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(player.IgnoredFlair) + flair=""; + String message=event.getMessage(); //2015.08.08. + for(Player p : PluginMain.GetPlayers()) + { //2015.08.12. + message.replaceAll(p.getName(), "§6"+p.getName()+"§r"); + } + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e4/3060bf8dcf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/e4/3060bf8dcf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..620a063 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e4/3060bf8dcf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,364 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import tk.sznp.thebuttonautoflair.MaybeOfflinePlayer.FlairClassType; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + AppendPlayerDisplayFlair(player, username, finalflair); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + player.sendMessage("§9Are you Reddit user "+username+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e6/c048252a4ca600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/e6/c048252a4ca600151c15ab42d7919fee new file mode 100644 index 0000000..7aaa8dd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e6/c048252a4ca600151c15ab42d7919fee @@ -0,0 +1,603 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + System.out.println("Player: " + Bukkit.getPlayer(Lastlol.UUID)); + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e9/504e12aee240001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/e9/504e12aee240001514c09dece48b36c7 new file mode 100644 index 0000000..4f33dd3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e9/504e12aee240001514c09dece48b36c7 @@ -0,0 +1,298 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); //2015.08.12. + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/e9/c0b3154ce440001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/e9/c0b3154ce440001514c09dece48b36c7 new file mode 100644 index 0000000..159e3e4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/e9/c0b3154ce440001514c09dece48b36c7 @@ -0,0 +1,296 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + PluginMain.Console.sendMessage("§6-- Reloading Auto-flair plugin...§r"); + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); //2015.08.12. + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/eb/3086890bd03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/eb/3086890bd03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..ce49e4e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/eb/3086890bd03e001518fa86d7ae2a1cf8 @@ -0,0 +1,198 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(player, p); + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/eb/40b3b71cad9e0015192daf17db672400 b/.metadata/.plugins/org.eclipse.core.resources/.history/eb/40b3b71cad9e0015192daf17db672400 new file mode 100644 index 0000000..d65c83d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/eb/40b3b71cad9e0015192daf17db672400 @@ -0,0 +1,595 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static boolean PluginUpdated = false; // 2015.08.31. + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); // 2015.08.08. + switch (args[0].toLowerCase()) // toLowerCase: 2015.08.09. + { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/eb/d028dc51d8a500151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/eb/d028dc51d8a500151c15ab42d7919fee new file mode 100644 index 0000000..08e6396 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/eb/d028dc51d8a500151c15ab42d7919fee @@ -0,0 +1,596 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) + { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ec/f0e2d8a2d8a500151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/ec/f0e2d8a2d8a500151c15ab42d7919fee new file mode 100644 index 0000000..01ff1c5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ec/f0e2d8a2d8a500151c15ab42d7919fee @@ -0,0 +1,597 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + Player p=null; + if(Lastlol!=null || Bukkit.getPlayer(Lastlol.UUID)) + Lastlol.UUID + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ed/f00520bce240001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/ed/f00520bce240001514c09dece48b36c7 new file mode 100644 index 0000000..f1e321a --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ed/f00520bce240001514c09dece48b36c7 @@ -0,0 +1,299 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§9You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§9Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§9Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§9Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + //System.out.println(message); + PluginMain.Console.sendMessage(message); //2015.08.12. + else + player.sendMessage(message); + + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ee/306a96924aa600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/ee/306a96924aa600151c15ab42d7919fee new file mode 100644 index 0000000..705d7bd --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ee/306a96924aa600151c15ab42d7919fee @@ -0,0 +1,364 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.GetFlairColor() == 0x00 ? 0xb + : mp.GetFlairColor())); // TODO: Quiz queue + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + if (e.getMessage().equalsIgnoreCase("lol")) + Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(e.getPlayer() + .getUniqueId()); + + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ef/206bbc9acf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/ef/206bbc9acf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..a085586 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ef/206bbc9acf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,71 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; + +import de.inventivegames.TellRawAutoMessage.Reflection; + +public class PlayerListener implements Listener +{ //2015.07.16. + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) + { + Player p=event.getPlayer(); + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); //2015.08.08. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); //2015.08.08. + if(mp.Flair!=null) + PluginMain.AppendPlayerDisplayFlair(p, mp.UserName, mp.Flair); + else + { //2015.07.20. + String json="[\"\",{\"text\":\"§6Hi! If you'd like your flair displayed ingame, write your Minecraft name to \"},{\"text\":\"[this thread.]\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread§r\"}]}}}]"; + sendRawMessage(p, json); + } + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) + { + } + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) + { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event.getPlayer().getName()); + String flair=player.Flair; //2015.08.08. + if(flair==null || !player.AcceptedFlair) + flair=""; //2015.08.08. + String message=event.getMessage(); //2015.08.08. + /*for(Player p : PluginMain.GetPlayers()) + { //2015.08.08. + message.replaceAll(p.getName(), ) + }*/ + event.setFormat(event.getFormat().substring(0, event.getFormat().indexOf(">"))+flair+"> "+message); //2015.08.08. + } + + private static Class nmsChatSerializer = Reflection.getNMSClass("IChatBaseComponent$ChatSerializer"); + private static Class nmsPacketPlayOutChat = Reflection.getNMSClass("PacketPlayOutChat"); + public static void sendRawMessage(Player player, String message) + { + try { + System.out.println("1"); + Object handle = Reflection.getHandle(player); + System.out.println("2"); + Object connection = Reflection.getField(handle.getClass(), "playerConnection").get(handle); + System.out.println("3"); + Object serialized = Reflection.getMethod(nmsChatSerializer, "a", String.class).invoke(null, message); + System.out.println("4"); + Object packet = nmsPacketPlayOutChat.getConstructor(Reflection.getNMSClass("IChatBaseComponent")).newInstance(serialized); + System.out.println("5"); + Reflection.getMethod(connection.getClass(), "sendPacket").invoke(connection, packet); + System.out.println("6"); + } catch (Exception e) { + e.printStackTrace(); + PluginMain.LastException=e; //2015.08.09. + } + } + +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f/a0d81438d33e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/f/a0d81438d33e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..f17161d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f/a0d81438d33e001518fa86d7ae2a1cf8 @@ -0,0 +1,216 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; + //SendMessage(player, msg); //2015.08.09. + + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f/b08c4dd3d13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/f/b08c4dd3d13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..fbfb948 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f/b08c4dd3d13e001518fa86d7ae2a1cf8 @@ -0,0 +1,372 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { + MaybeOfflinePlayer.AllPlayers.clear(); //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f0/b01766da4ba600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/f0/b01766da4ba600151c15ab42d7919fee new file mode 100644 index 0000000..0648957 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f0/b01766da4ba600151c15ab42d7919fee @@ -0,0 +1,604 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + System.out.println("Lastlol: " + Lastlol); + System.out.println("Player: " + Bukkit.getPlayer(Lastlol.UUID)); + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f2/205fa4c2d03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/f2/205fa4c2d03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..5dcd8d1 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f2/205fa4c2d03e001518fa86d7ae2a1cf8 @@ -0,0 +1,209 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + + } + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f2/a0380b49d03e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/f2/a0380b49d03e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..c1a5059 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f2/a0380b49d03e001518fa86d7ae2a1cf8 @@ -0,0 +1,200 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + break; + case "cantpress": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f3/203061bfd23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/f3/203061bfd23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..717cff8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f3/203061bfd23e001518fa86d7ae2a1cf8 @@ -0,0 +1,215 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Reloaded all files.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f3/a09a2529d33e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/f3/a09a2529d33e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..2a7e8d7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f3/a09a2529d33e001518fa86d7ae2a1cf8 @@ -0,0 +1,215 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + PluginMain.AppendPlayerDisplayFlair(p, player); + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§7(non-pr.)§r"; + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + p.Flair="§r(can't press)§r"; + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + //PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + } + //String msg="§6Reloaded config file.§r"; + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f3/b07c2ef049a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/f3/b07c2ef049a600151c15ab42d7919fee new file mode 100644 index 0000000..f53b4ae --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f3/b07c2ef049a600151c15ab42d7919fee @@ -0,0 +1,353 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.IOUtils; +import org.bukkit.Bukkit; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.htmlcleaner.HtmlCleaner; +import org.htmlcleaner.TagNode; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.io.*; +import java.lang.String; +import java.lang.reflect.Method; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLConnection; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.TimeZone; + +public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15. + // A user, which flair isn't obtainable: + // https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + public static PluginMain Instance; + public static ConsoleCommandSender Console; // 2015.08.12. + + // Fired when plugin is first enabled + @Override + public void onEnable() { + try { + System.out.println("Extracting necessary libraries..."); + final File[] libs = new File[] { new File(getDataFolder(), + "htmlcleaner-2.16.jar") }; + for (final File lib : libs) { + if (!lib.exists()) { + JarUtils.extractFromJar(lib.getName(), + lib.getAbsolutePath()); + } + } + for (final File lib : libs) { + if (!lib.exists()) { + getLogger().warning( + "Failed to load plugin! Could not find lib: " + + lib.getName()); + Bukkit.getServer().getPluginManager().disablePlugin(this); + return; + } + addClassPath(JarUtils.getJarUrl(lib)); + } + } catch (final Exception e) { + e.printStackTrace(); + } + + getServer().getPluginManager().registerEvents(new PlayerListener(), + this); + Commands comm = new Commands(); + this.getCommand("u").setExecutor(comm); + this.getCommand("u").setUsage( + this.getCommand("u").getUsage().replace('&', '§')); + this.getCommand("nrp").setExecutor(comm); + this.getCommand("nrp").setUsage( + this.getCommand("nrp").getUsage().replace('&', '§')); + this.getCommand("ooc").setExecutor(comm); + this.getCommand("ooc").setUsage( + this.getCommand("ooc").getUsage().replace('&', '§')); + Instance = this; // 2015.08.08. + Console = this.getServer().getConsoleSender(); // 2015.08.12. + LoadFiles(false); // 2015.08.09. + Runnable r = new Runnable() { + public void run() { + ThreadMethod(); + } + }; + Thread t = new Thread(r); + t.start(); + r = new Runnable() { + public void run() { + AnnouncerThread.Run(); + } + }; + t = new Thread(r); + t.start(); + } + + public Boolean stop = false; + + // Fired when plugin is disabled + @Override + public void onDisable() { + SaveFiles(); // 2015.08.09. + stop = true; + } + + private void ThreadMethod() { + while (!stop) { + try { + String body = DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json = new JSONArray(body).getJSONObject(1) + .getJSONObject("data").getJSONArray("children"); + for (Object obj : json) { + JSONObject item = (JSONObject) obj; + String author = item.getJSONObject("data").getString( + "author"); + String ign = item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + if (start == -1 + "IGN:".length()) // +length: 2015.08.10. + continue; // 2015.08.09. + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end = ign.indexOf('\n', start); // 2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.GetFromName(ign); + if (mp == null) + continue; + if (!mp.UserNames.contains(author)) + mp.UserNames.add(author); + if (mp.FlairState.equals(FlairStates.NoComment)) { + mp.FlairState = FlairStates.Commented; + ConfirmUserMessage(mp); + } + try { + Thread.sleep(10); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } + try { + Thread.sleep(10000); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + } catch (Exception e) { + // System.out.println("Error!\n" + e); + LastException = e; // 2015.08.09. + } + } + } + + public void DownloadFlair(MaybeOfflinePlayer mp) + throws MalformedURLException, IOException { + String[] flairdata = DownloadString( + "http://karmadecay.com/thebutton-data.php?users=" + mp.UserName) + .replace("\"", "").split(":"); + String flair; + if (flairdata.length > 1) + flair = flairdata[1]; + else + flair = ""; + String flairclass; + if (flairdata.length > 2) + flairclass = flairdata[2]; + else + flairclass = "unknown"; + SetFlair(mp, flair, flairclass, mp.UserName); + } + + public static Exception LastException; // 2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, + IOException { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + private void SetFlair(MaybeOfflinePlayer p, String text, String flairclass, + String username) { + p.UserName = username; + p.FlairState = FlairStates.Recognised; + switch (flairclass) { + case "press-1": + p.SetFlairColor(0xc); + break; + case "press-2": + p.SetFlairColor(0x6); + break; + case "press-3": + p.SetFlairColor(0xe); + break; + case "press-4": + p.SetFlairColor(0xa); + break; + case "press-5": + p.SetFlairColor(0x9); + break; + case "press-6": + p.SetFlairColor(0x5); + break; + case "no-press": + p.SetFlairColor(0x7); + break; + case "cheater": + p.SetFlairColor(0x5); + break; + case "cant-press": + p.SetFlairColor(0xf); + break; + case "unknown": + if (text.equals("-1")) // If true, only non-presser/can't press; if + // false, any flair + { + try { + if (CheckForJoinDate(p)) { + p.SetFlair(0x7, "--"); + } else { + p.SetFlair(0xf, "--"); + } + } catch (Exception e) { + p.FlairState = FlairStates.Commented; // Flair unknown + p.SetFlairColor(0); + e.printStackTrace(); + } + } else { + p.FlairState = FlairStates.Commented; // Flair unknown + p.SetFlairColor(0); + } + return; + default: + return; + } + if (text.equals("-1")) + text = "--"; + p.FlairTime = text; + } + + public static boolean CheckForJoinDate(MaybeOfflinePlayer mp) + throws Exception { + URL url = new URL("https://www.reddit.com/u/" + mp.UserName); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + HtmlCleaner cleaner = new HtmlCleaner(); + TagNode node = cleaner.clean(in); + + node = node.getElementsByAttValue("class", "age", true, true)[0]; + node = node.getElementsByName("time", false)[0]; + String joindate = node.getAttributeByName("datetime"); + SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd"); + joindate = joindate.split("T")[0]; + Date date = parserSDF.parse(joindate); + return date.before(new Calendar.Builder() + .setTimeZone(TimeZone.getTimeZone("UTC")).setDate(2015, 4, 1) + .build().getTime()); + } + + public static void ConfirmUserMessage(MaybeOfflinePlayer mp) { + Player p = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented) && p != null) + if (mp.UserNames.size() > 1) + p.sendMessage("§9Multiple Reddit users commented your name. You can select with /u accept.§r §6Type /u accept or /u ignore§r"); + else + p.sendMessage("§9A Reddit user commented your name. Is that you?§r §6Type /u accept or /u ignore§r"); + } + + public static Collection GetPlayers() { + return Instance.getServer().getOnlinePlayers(); + } + + public static ArrayList AnnounceMessages = new ArrayList<>(); + public static int AnnounceTime = 15 * 60 * 1000; + + public static void LoadFiles(boolean reload) { + if (reload) { + System.out + .println("The Button Minecraft plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + AnnounceMessages.clear(); + } + System.out.println("Loading files for The Button Minecraft plugin..."); + try { + File file = new File("announcemessages.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsaccepted.txt"); + if (file.exists()) + file.delete(); + file = new File("flairsignored.txt"); + if (file.exists()) + file.delete(); + file = new File("thebuttonmc.yml"); + if (file.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + yc.load(file); + MaybeOfflinePlayer.Load(yc); + PlayerListener.NotificationSound = yc + .getString("notificationsound"); + PlayerListener.NotificationPitch = yc + .getDouble("notificationpitch"); + AnnounceTime = yc.getInt("announcetime"); + AnnounceMessages.addAll(yc.getStringList("announcements")); + } + System.out.println("The Button Minecraft plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } catch (InvalidConfigurationException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + public static void SaveFiles() { + System.out.println("Saving files for The Button Minecraft plugin..."); + try { + File file = new File("thebuttonmc.yml"); + YamlConfiguration yc = new YamlConfiguration(); + MaybeOfflinePlayer.Save(yc); + yc.set("notificationsound", PlayerListener.NotificationSound); + yc.set("notificationpitch", PlayerListener.NotificationPitch); + yc.set("announcetime", AnnounceTime); + yc.set("announcements", AnnounceMessages); + yc.save(file); + System.out.println("The Button Minecraft plugin saved files!"); + } catch (IOException e) { + System.out.println("Error!\n" + e); + LastException = e; + } + } + + private void addClassPath(final URL url) throws IOException { + final URLClassLoader sysloader = (URLClassLoader) ClassLoader + .getSystemClassLoader(); + final Class sysclass = URLClassLoader.class; + try { + final Method method = sysclass.getDeclaredMethod("addURL", + new Class[] { URL.class }); + method.setAccessible(true); + method.invoke(sysloader, new Object[] { url }); + } catch (final Throwable t) { + t.printStackTrace(); + throw new IOException("Error adding " + url + + " to system classloader"); + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f4/20d00369d23e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/f4/20d00369d23e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..7316b80 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f4/20d00369d23e001518fa86d7ae2a1cf8 @@ -0,0 +1,380 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { //2015.08.09. + System.out.println("Auto-flair plugin cleanup for reloading..."); + MaybeOfflinePlayer.AllPlayers.clear(); + TownColors.clear(); + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + System.out.println("Auto-flair plugin loaded files!"); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + public static void SaveFiles() + { + + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f5/60e49bf5de40001514c09dece48b36c7 b/.metadata/.plugins/org.eclipse.core.resources/.history/f5/60e49bf5de40001514c09dece48b36c7 new file mode 100644 index 0000000..45cf563 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f5/60e49bf5de40001514c09dece48b36c7 @@ -0,0 +1,297 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.io.FileUtils; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(!p.CommentedOnReddit && !args[0].toLowerCase().equals("admin")) + { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if(!p.FlairRecognised && !args[0].toLowerCase().equals("admin")) + { //2015.08.10. + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + //PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + PluginMain.AppendPlayerDisplayFlair(p, player); + player.sendMessage("§9Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + //String flair=p.Flair; //2015.08.08. + //PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type.§r"); + break; + } + SetPlayerFlair(player, p, "§7(--s)§r"); + break; + case "cantpress": //2015.08.09. + if(!p.AcceptedFlair) + { + player.sendMessage("§cYou need to accept the flair first.§r"); + break; + } + if(p.FlairDecided) + { + player.sendMessage("§cYou have already set the flair type or your flair type is known.§r"); + break; + } + SetPlayerFlair(player, p, "§r(??s)§r"); + break; + case "opme": //2015.08.10. + player.sendMessage("It would be nice, isn't it?"); //Sometimes I'm bored too + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.LoadFiles(true); //2015.08.09. + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p.getName()); + //if(mp.Flair!=null) + if(mp.CommentedOnReddit) + { + PluginMain.AppendPlayerDisplayFlair(mp, p); //2015.08.09. + } + String msg="§6Note: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; //2015.08.09. + p.sendMessage(msg); //2015.08.09. + } + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static Player ReloadPlayer; //2015.08.09. + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName().equals("NorbiPeti")) + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + ReloadPlayer=player; //2015.08.09. + SendMessage(player, "§6Make sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; //<-- 2015.08.10. + case "confirm": + if(ReloadPlayer==player) + DoReload(player); //2015.08.09. + else + SendMessage(player, "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); //2015.08.09. + SendMessage(player, "§6Saved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": //2015.08.10. + DoUpdatePlugin(player); + break; + default: + String message="§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + SendMessage(player, "Flair decided: "+p.FlairDecided); + SendMessage(player, "Flair recognised: "+p.FlairRecognised); + SendMessage(player, "Commented on Reddit: "+p.CommentedOnReddit); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } + private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, String flair) + { //2015.08.09. + flair=flair.replace('&', '§'); + targetplayer.Flair=flair; + targetplayer.CommentedOnReddit=true; //Or at least has a flair in some way + if(!PluginMain.RemoveLineFromFile("customflairs.txt", targetplayer.PlayerName)) + { + SendMessage(player, "§cError removing previous custom flair!§r"); + return; + } + File file=new File("customflairs.txt"); + try { + BufferedWriter bw; + bw = new BufferedWriter(new FileWriter(file, true)); + bw.write(targetplayer.PlayerName+targetplayer.Flair+"\n"); + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + SendMessage(player, "§9The flair has been set. Player: "+targetplayer.PlayerName+" Flair: "+flair+"§r"); + } + private static void DoSetFlair(Player player, String[] args) + { + //args[0] is "admin" - args[1] is "setflair" + if(args.length<4) + { + SendMessage(player, "§cUsage: /u admin setflair "); + return; + } + SetPlayerFlair(player, MaybeOfflinePlayer.AddPlayerIfNeeded(args[2]), args[3]); + } + private static void DoUpdatePlugin(Player player) + { //2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL("https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File("plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } + catch (MalformedURLException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + catch (IOException e) { + System.out.println("Error!\n"+e); + PluginMain.LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f5/a069aa5a45a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/f5/a069aa5a45a600151c15ab42d7919fee new file mode 100644 index 0000000..e854e6f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f5/a069aa5a45a600151c15ab42d7919fee @@ -0,0 +1,115 @@ +package tk.sznp.thebuttonautoflair; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.YamlConfiguration; + +public class MaybeOfflinePlayer { + public String PlayerName; + public String UserName; + public List UserNames; + private String FlairTime; + private short FlairColor; + public FlairStates FlairState; + public boolean RPMode = true; + public boolean PressedF; + public Location SavedLocation; + public boolean Working; + public int Tables = 10; + + public UUID UUID; + + public static HashMap AllPlayers = new HashMap<>(); + + public static MaybeOfflinePlayer AddPlayerIfNeeded(UUID uuid) { + if (!AllPlayers.containsKey(uuid)) { + MaybeOfflinePlayer player = new MaybeOfflinePlayer(); + player.UUID = uuid; + player.FlairColor = 0; + player.FlairTime = ""; + player.FlairState = FlairStates.NoComment; + player.UserNames = new ArrayList<>(); + AllPlayers.put(uuid, player); + return player; + } + return AllPlayers.get(uuid); + } + + public static void Load(YamlConfiguration yc) { + ConfigurationSection cs = yc.getConfigurationSection("players"); + for (String key : cs.getKeys(false)) { + ConfigurationSection cs2 = cs.getConfigurationSection(key); + MaybeOfflinePlayer mp = AddPlayerIfNeeded(java.util.UUID + .fromString(cs2.getString("uuid"))); + mp.UserName = cs2.getString("username"); + mp.FlairColor = (short) cs2.getInt("flaircolor"); + mp.FlairTime = cs2.getString("flairtime"); + String flairstate = cs2.getString("flairstate"); + if (flairstate != null) + mp.FlairState = FlairStates.valueOf(flairstate); + else + mp.FlairState = FlairStates.NoComment; + mp.PlayerName = cs2.getString("playername"); + mp.UserNames = cs2.getStringList("usernames"); + } + } + + public static void Save(YamlConfiguration yc) { + ConfigurationSection cs = yc.createSection("players"); + for (MaybeOfflinePlayer mp : MaybeOfflinePlayer.AllPlayers.values()) { + ConfigurationSection cs2 = cs.createSection(mp.UUID.toString()); + cs2.set("playername", mp.PlayerName); + cs2.set("username", mp.UserName); + cs2.set("flaircolor", mp.FlairColor); + cs2.set("flairtime", mp.FlairTime); + cs2.set("flairstate", mp.FlairState.toString()); + cs2.set("uuid", mp.UUID.toString()); + cs2.set("usernames", mp.UserNames); + } + } + + public static MaybeOfflinePlayer GetFromName(String name) { + for (MaybeOfflinePlayer mp : AllPlayers.values()) + if (mp.PlayerName.equalsIgnoreCase(name)) + return mp; + return null; + } + + public String GetFormattedFlair() { + if (FlairColor == 0x00) + return ""; + if (FlairTime == null || FlairTime.length() == 0) + return String.format("§%x(??s)§r", FlairColor); + return String.format("§%x(%ss)§r", FlairColor, FlairTime); + } + + public void SetFlairColor(short color) { + FlairColor = color; + SetFlair2(); + } + + public void SetFlairTime(String time) { + FlairTime = time; + SetFlair2(); + } + + public void SetFlair(short color, String time) { + FlairColor = color; + FlairTime = time; + SetFlair2(); + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + Bukkit.getPlayer(UUID); + p.setPlayerListName(String.Format("%s%s", )); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f7/7055129442a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/f7/7055129442a600151c15ab42d7919fee new file mode 100644 index 0000000..f08f9cb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f7/7055129442a600151c15ab42d7919fee @@ -0,0 +1,365 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.FlairColor == 0x00 ? 0xb + : mp.FlairColor)); // TODO: Quiz queue + // TODO: Flairs from Command Block The Button - Teams + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + if (e.getMessage().equalsIgnoreCase("lol")) + Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(e.getPlayer() + .getUniqueId()); + + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/f9/a01791b5d13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/f9/a01791b5d13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..6f7db8d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/f9/a01791b5d13e001518fa86d7ae2a1cf8 @@ -0,0 +1,369 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) + { + MaybeOfflinePlayer.AllPlayers.clear(); + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fa/b05b33334ba600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/fa/b05b33334ba600151c15ab42d7919fee new file mode 100644 index 0000000..f8a30d7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/fa/b05b33334ba600151c15ab42d7919fee @@ -0,0 +1,603 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.SetFlairTime(""); + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": + Player p = null; + System.out.println("Lastlol: " + Lastlol); + if (Lastlol != null + || (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.SetFlair(flaircolor, flairtime); + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fb/307961d7cf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/fb/307961d7cf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..ccaedeb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/fb/307961d7cf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,363 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + player.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fc/80951d9441a600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/fc/80951d9441a600151c15ab42d7919fee new file mode 100644 index 0000000..ac36cf3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/fc/80951d9441a600151c15ab42d7919fee @@ -0,0 +1,597 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + Player p=null; + if(Lastlol!=null || (p=Bukkit.getPlayer(Lastlol.UUID))!=null) + p.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 10, 5, false, false)); + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fe/204112ead13e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/fe/204112ead13e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..318be3d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/fe/204112ead13e001518fa86d7ae2a1cf8 @@ -0,0 +1,374 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.io.IOUtils; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.json.JSONArray; +import org.json.JSONObject; + +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.WorldCoord; + +public class PluginMain extends JavaPlugin +{ //Translated to Java: 2015.07.15. + //A user, which flair isn't obtainable: + //https://www.reddit.com/r/thebutton/comments/31c32v/i_pressed_the_button_without_really_thinking/ + private static PluginMain Instance; + // Fired when plugin is first enabled + @Override + public void onEnable() + { + System.out.println("The Button Auto-flair Plugin by NorbiPeti (:P)"); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + this.getCommand("u").setExecutor(new Commands()); + this.getCommand("u").setUsage(this.getCommand("u").getUsage().replace('&', '§')); + Instance=this; //2015.08.08. + LoadFiles(false); //2015.08.09. + Runnable r=new Runnable(){public void run(){ThreadMethod();}}; + Thread t=new Thread(r); + t.start(); + } + Boolean stop=false; + // Fired when plugin is disabled + @Override + public void onDisable() + { + try + { + FileWriter fw; + fw = new FileWriter("flairsaccepted.txt"); + fw.close(); + fw = new FileWriter("flairsignored.txt"); + fw.close(); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + try { + File file=new File("flairsaccepted.txt"); + BufferedWriter bw=new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.AcceptedFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + file=new File("flairsignored.txt"); + bw = new BufferedWriter(new FileWriter(file, true)); + for(MaybeOfflinePlayer player : MaybeOfflinePlayer.AllPlayers.values()) //<-- 2015.08.08. + { + if(!player.IgnoredFlair) + continue; //2015.08.08. + bw.write(player.PlayerName+"\n"); + } + bw.close(); + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + stop=true; + } + + public void ThreadMethod() //<-- 2015.07.16. + { + while(!stop) + { + try + { + String body=DownloadString("https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/autoflair_system_comment_your_minecraft_name_and/.json?limit=1000"); + JSONArray json=new JSONArray(body).getJSONObject(1).getJSONObject("data").getJSONArray("children"); + for(Object obj : json) + { + JSONObject item = (JSONObject)obj; + String author=item.getJSONObject("data").getString("author"); + String ign=item.getJSONObject("data").getString("body"); + int start = ign.indexOf("IGN:") + "IGN:".length(); + int end = ign.indexOf(' ', start); + if (end == -1 || end == start) + end=ign.indexOf('\n', start); //2015.07.15. + if (end == -1 || end == start) + ign = ign.substring(start); + else + ign = ign.substring(start, end); + ign = ign.trim(); + if(HasIGFlair(ign)) + continue; + try { + Thread.sleep(10); + } catch(InterruptedException ex) { + Thread.currentThread().interrupt(); + } + String[] flairdata = DownloadString("http://karmadecay.com/thebutton-data.php?users=" + author).replace("\"", "").split(":"); + String flair; + if(flairdata.length > 1) //2015.07.15. + flair = flairdata[1]; + else + flair=""; + if (flair != "-1") + flair = flair + "s"; + else + flair = "non-presser"; + String flairclass; + if(flairdata.length>2) + flairclass = flairdata[2]; + else + flairclass="unknown"; + SetFlair(ign, flair, flairclass, author); + } + Thread.sleep(10000); + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } + } + + public static Exception LastException; //2015.08.09. + + public String DownloadString(String urlstr) throws MalformedURLException, IOException + { + URL url = new URL(urlstr); + URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", "TheButtonAutoFlair"); + InputStream in = con.getInputStream(); + String encoding = con.getContentEncoding(); + encoding = encoding == null ? "UTF-8" : encoding; + String body = IOUtils.toString(in, encoding); + in.close(); + return body; + } + + public static Map TownColors=new HashMap(); //2015.07.20. + public Boolean HasIGFlair(String playername) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + return p.Flair!=null; //2015.08.08. + } + + public void SetFlair(String playername, String text, String flairclass, String username) + { + MaybeOfflinePlayer p=MaybeOfflinePlayer.AddPlayerIfNeeded(playername); //2015.08.08. + String finalflair; + p.FlairDecided=true; + switch(flairclass) + { + case "press-1": + finalflair="§c("+text+")§r"; + break; + case "press-2": + finalflair="§6("+text+")§r"; + break; + case "press-3": + finalflair="§e("+text+")§r"; + break; + case "press-4": + finalflair="§a("+text+")§r"; + break; + case "press-5": + finalflair="§9("+text+")§r"; + break; + case "press-6": + finalflair="§5("+text+")§r"; + break; + case "no-press": + finalflair="§7(non-pr.)§r"; + break; + case "cheater": + finalflair="§5("+text+")§r"; + break; + case "cant-press": //2015.08.08. + finalflair="§r(can't press)§r"; + break; + case "undecided": //2015.08.09. + p.FlairDecided=false; + finalflair=""; + break; + default: + finalflair=""; + break; + } + if(finalflair.length()==0) //<-- 2015.07.20. + return; + p.Flair=finalflair; //2015.08.08. + p.UserName=username; //2015.08.08. + System.out.println("Added new flair to "+playername+": "+finalflair); + for(Player player : getServer().getOnlinePlayers()) //<-- 2015.08.08. + { + if(player.getName().equals(playername)) + { + //AppendPlayerDisplayFlair(player, username, finalflair); + AppendPlayerDisplayFlair(p, player); + break; + } + } + } + + public static String GetFlair(Player player) + { //2015.07.16. + String flair=MaybeOfflinePlayer.AllPlayers.get(player.getName()).Flair; //2015.08.08. + return flair==null ? "" : flair; + } + + //public static void AppendPlayerDisplayFlair(Player player, String username, String flair) + public static void AppendPlayerDisplayFlair(MaybeOfflinePlayer player, Player p) //<-- 2015.08.09. + { + + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).IgnoredFlair) + return; + if(MaybeOfflinePlayer.AllPlayers.get(p.getName()).AcceptedFlair) + { + AppendPlayerDisplayFlairFinal(p, player.Flair); //2015.07.20. + if(!player.FlairDecided) + p.sendMessage("§9Your flair type is unknown. Are you a non-presser or a can't press? (/u nonpresser or /u cantpress)§r"); //2015.08.09. + } + else + p.sendMessage("§9Are you Reddit user "+player.UserName+"?§r §6Type /u accept or /u ignore§r"); + } + + private static void AppendPlayerDisplayFlairFinal(Player player, String flair) + { //2015.07.20. + String color = GetColorForTown(GetPlayerTown(player)); //TO!DO: Multiple colors put on first capital letters + String[] colors = color.substring(1).split("§"); + String displayname=player.getName(); //2015.08.08. + ArrayList Positions=new ArrayList<>(); + for(int i=0; i=colors.length) + { + int x=0; + for(int i=0; i GetPlayers() + { + return Instance.getServer().getOnlinePlayers(); + } + + public static void LoadFiles(boolean reload) //<-- 2015.08.09. + { + if(reload) + { + System.out.println("Reloading files for auto-flair plugin..."); + MaybeOfflinePlayer.AllPlayers.clear(); //2015.08.09. + } + System.out.println("Loading files for auto-flair plugin..."); //2015.08.09. + try { + File file=new File("flairsaccepted.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsaccepted.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + //System.out.println("Name: " + name); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).AcceptedFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("flairsignored.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader("flairsignored.txt")); + String line; + while ((line = br.readLine()) != null) + { + String name=line.replace("\n", ""); + MaybeOfflinePlayer.AddPlayerIfNeeded(name).IgnoredFlair=true; //2015.08.08. + } + br.close(); + } + file=new File("autoflairconfig.txt"); + if(file.exists()) + { + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + TownColors.put(s[0], s[1]); + } + br.close(); + } + //throw new IOException("Test"); //2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n"+e); + LastException=e; //2015.08.09. + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/fe/f0cde596d8a500151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/fe/f0cde596d8a500151c15ab42d7919fee new file mode 100644 index 0000000..f031b8c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/fe/f0cde596d8a500151c15ab42d7919fee @@ -0,0 +1,596 @@ +package tk.sznp.thebuttonautoflair; + +import org.apache.commons.io.FileUtils; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.command.BlockCommandSender; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Ocelot; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.earth2me.essentials.Mob; +import com.earth2me.essentials.Mob.MobException; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Random; +import java.util.Timer; + +public class Commands implements CommandExecutor { + + public static MaybeOfflinePlayer Lastlol = null; + + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, + String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + switch (cmd.getName()) { + case "u": { + if (args.length < 1) + return false; + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player + .getUniqueId()); + switch (args[0].toLowerCase()) { + case "accept": { + if (args.length < 2 && p.UserNames.size() > 1) { + player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + player.sendMessage(sb.toString()); + return true; + } + if (p.FlairState.equals(FlairStates.NoComment) + || p.UserNames.size() == 0) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (args.length > 1 && !p.UserNames.contains(args[1])) { + player.sendMessage("§cError: Unknown name: " + args[1] + + "§r"); + return true; + } + if (p.Working) { + player.sendMessage("§cError: Something is already in progress.§r"); + return true; + } + + if ((args.length > 1 ? args[1] : p.UserNames.get(0)) + .equals(p.UserName)) { + player.sendMessage("§cYou already have this user's flair.§r"); + return true; + } + if (args.length > 1) + p.UserName = args[1]; + else + p.UserName = p.UserNames.get(0); + + player.sendMessage("§bObtaining flair..."); + p.Working = true; + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + try { + PluginMain.Instance.DownloadFlair(mp); + } catch (Exception e) { + e.printStackTrace(); + } + + Player player = Bukkit.getPlayer(mp.UUID); + if (mp.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask an admin to set it for you. Also, prepare a comment on /r/thebutton, if possible."); + return; + } + String flair = mp.GetFormattedFlair(); + mp.FlairState = FlairStates.Accepted; + PluginMain.ConfirmUserMessage(mp); + player.sendMessage("§bYour flair has been set:§r " + + flair); + mp.Working = false; + } + }; + tt.mp = p; + timer.schedule(tt, 20); + break; + } + case "ignore": { + if (p.FlairState.equals(FlairStates.NoComment)) { + player.sendMessage("§cError: You need to write your username to the reddit thread at /r/TheButtonMinecraft§r"); + return true; + } + if (p.FlairState.equals(FlairStates.Commented)) { + player.sendMessage("Sorry, but your flair isn't recorded. Please ask a mod to set it for you."); + return true; + } + if (!p.FlairState.equals(FlairStates.Ignored)) { + p.FlairState = FlairStates.Ignored; + p.FlairTime = ""; + p.UserName = ""; + player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); + } else + player.sendMessage("§cYou already removed your flair.§r"); + break; + } + case "admin": // 2015.08.09. + DoAdmin(player, args); + break; + case "opme": // 2015.08.10. + player.sendMessage("It would be nice, wouldn't it?"); // Sometimes + // I'm + // bored + // too + break; + case "announce": + DoAnnounce(player, args, null); + break; + case "name": + if (args.length == 1) { + player.sendMessage("§cUsage: /u name §r"); + break; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer + .GetFromName(args[1]); + if (mp == null) { + player.sendMessage("§cUnknown user: " + args[1]); + break; + } + player.sendMessage("§bUsername of " + args[1] + ": " + + mp.UserName); + break; + case "enable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = true; + player.sendMessage("Enabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "disable": + if (player.getName().equals("NorbiPeti")) { + PlayerListener.Enable = false; + player.sendMessage("Disabled."); + } else + player.sendMessage("Unknown command: " + cmd.getName()); + break; + case "kittycannon": + DoKittyCannon(player, args); + break; + default: + return false; + } + return true; + } + case "nrp": + case "ooc": + if (args.length == 0) { + return false; + } else { + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = false; + String message = ""; + for (String arg : args) + message += arg + " "; + player.chat(message.substring(0, message.length() - 1)); + MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; + } + return true; + case "unlol": // TODO: Unlol + if(Lastlol!=nullBukkit.getPlayer(Lastlol.UUID)) + Lastlol.UUID + return true; + default: + player.sendMessage("Unknown command: " + cmd.getName()); + break; + } + } else if (args.length > 0 && args[0].toLowerCase().equals("admin")) // 2015.08.09. + { + DoAdmin(null, args); // 2015.08.09. + return true; // 2015.08.09. + } else if (args.length > 0 && args[0].toLowerCase().equals("announce")) { + if (sender instanceof BlockCommandSender) + DoAnnounce(null, args, (BlockCommandSender) sender); + else + DoAnnounce(null, args, null); + return true; + } + return false; + } + + private static void DoReload(Player player) { // 2015.07.20. + try { + PluginMain.Console + .sendMessage("§6-- Reloading The Button Minecraft plugin...§r"); + PluginMain.LoadFiles(true); // 2015.08.09. + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + if (mp.FlairState.equals(FlairStates.Recognised) + || mp.FlairState.equals(FlairStates.Commented)) { + PluginMain.ConfirmUserMessage(mp); + } + String msg = "§bNote: The auto-flair plugin has been reloaded. You might need to wait 10s to have your flair.§r"; // 2015.08.09. + p.sendMessage(msg); // 2015.08.09. + } + PluginMain.Console.sendMessage("§6-- Reloading done!§r"); + } catch (Exception e) { + System.out.println("Error!\n" + e); + if (player != null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static Player ReloadPlayer; // 2015.08.09. + + private static String DoAdminUsage = "§cUsage: /u admin reload|playerinfo|getlasterror|save|setflair|updateplugin|togglerpshow|toggledebug|savepos|loadpos§r"; + + private static void DoAdmin(Player player, String[] args) { // 2015.08.09. + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + // args[0] is "admin" + switch (args[1].toLowerCase()) { + case "reload": + ReloadPlayer = player; // 2015.08.09. + SendMessage( + player, + "§bMake sure to save the current settings before you modify and reload them! Type /u admin confirm when done.§r"); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + break; // <-- 2015.08.10. + case "confirm": + if (ReloadPlayer == player) + DoReload(player); // 2015.08.09. + else + SendMessage(player, + "§cYou need to do /u admin reload first.§r"); + break; + case "save": + PluginMain.SaveFiles(); // 2015.08.09. + SendMessage(player, + "§bSaved files. Now you can edit them and reload if you want.§r"); + break; + case "setflair": + DoSetFlair(player, args); + break; + case "updateplugin": // 2015.08.10. + DoUpdatePlugin(player); + break; + case "togglerpshow": + PlayerListener.ShowRPTag = !PlayerListener.ShowRPTag; + SendMessage(player, "RP tag showing " + + (PlayerListener.ShowRPTag ? "enabled" : "disabled")); + break; + case "toggledebug": + PlayerListener.DebugMode = !PlayerListener.DebugMode; + SendMessage(player, "DebugMode: " + PlayerListener.DebugMode); + break; + case "savepos": + DoSaveLoadPos(player, args); + break; + case "loadpos": + DoSaveLoadPos(player, args); + break; + case "updatedynmap": + DoUpdateDynmap(player, args); + default: + String message = DoAdminUsage; + SendMessage(player, message); + return; + } + } else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + + private static void DoPlayerInfo(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "playerinfo" + if (args.length == 2) { + String message = "§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.GetFromName(args[2]); + if (p == null) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + SendMessage(player, "Player name: " + p.PlayerName); + SendMessage(player, "User flair: " + p.GetFormattedFlair()); + SendMessage(player, "Username: " + p.UserName); + SendMessage(player, "Flair state: " + p.FlairState); + StringBuilder sb = new StringBuilder(); + sb.append("§6Usernames:"); + for (String username : p.UserNames) + sb.append(" ").append(username); + SendMessage(player, sb.toString()); + } + + private static void SendMessage(Player player, String message) { // 2015.08.09. + if (player == null) + PluginMain.Console.sendMessage(message); // 2015.08.12. + else + player.sendMessage(message); + } + + private static void DoGetLastError(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "getlasterror" + if (PluginMain.LastException != null) { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException = null; + } else + SendMessage(player, "There were no exceptions."); + } + + private static void SetPlayerFlair(Player player, + MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { + targetplayer.FlairColor = flaircolor; + targetplayer.FlairTime = flairtime; + targetplayer.FlairState = FlairStates.Accepted; + targetplayer.UserName = ""; + SendMessage(player, + "§bThe flair has been set. Player: " + targetplayer.PlayerName + + " Flair: " + targetplayer.GetFormattedFlair() + "§r"); + } + + private static void DoSetFlair(Player player, String[] args) { + // args[0] is "admin" - args[1] is "setflair" + if (args.length < 4) { + SendMessage(player, + "§cUsage: /u admin setflair [number]"); + return; + } + Player p = Bukkit.getPlayer(args[2]); + if (p == null) { + SendMessage(player, "§cPLayer not found.&r"); + return; + } + short flaircolor = 0x00; + try { + flaircolor = Short.parseShort(args[3], 16); + } catch (Exception e) { + SendMessage(player, + "§cFlaircolor must be a hexadecimal number (don't include &)."); + return; + } + SetPlayerFlair(player, + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()), + flaircolor, (args.length < 5 ? "" : args[4])); + } + + private static void DoUpdatePlugin(Player player) { // 2015.08.10. + SendMessage(player, "Updating Auto-Flair plugin..."); + System.out.println("Forced updating of Auto-Flair plugin."); + URL url; + try { + url = new URL( + "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); + FileUtils.copyURLToFile(url, new File( + "plugins/TheButtonAutoFlair.jar")); + PluginUpdated = true; // 2015.08.31. + SendMessage(player, "Updating done!"); + } catch (MalformedURLException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } catch (IOException e) { + System.out.println("Error!\n" + e); + PluginMain.LastException = e; // 2015.08.09. + } + } + + private static void DoAnnounce(Player player, String[] args, + BlockCommandSender commandblock) { + if (player == null || player.isOp() + || player.getName().equals("NorbiPeti")) { + if (args.length == 1) { + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + switch (args[1].toLowerCase()) { + case "add": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce add "); + return; + } + StringBuilder sb = new StringBuilder(); + for (int i = 2; i < args.length; i++) { + sb.append(args[i]); + if (i != args.length - 1) + sb.append(" "); + } + String finalmessage = sb.toString().replace('&', '§'); + PluginMain.AnnounceMessages.add(finalmessage); + SendMessage(player, "§bAnnouncement added.§r"); + break; + case "remove": + if (args.length < 3) { + SendMessage(player, "§cUsage: /u announce remove "); + return; + } + PluginMain.AnnounceMessages.remove(Integer.parseInt(args[2])); + break; + case "settime": + if (args.length < 3) { + SendMessage(player, + "§cUsage: /u announce settime "); + return; + } + PluginMain.AnnounceTime = Integer.parseInt(args[2]) * 60 * 1000; + SendMessage(player, "Time set between announce messages"); + break; + case "list": + SendMessage(player, "§bList of announce messages:§r"); + SendMessage(player, "§bFormat: [index] message§r"); + int i = 0; + for (String message : PluginMain.AnnounceMessages) + SendMessage(player, "[" + i++ + "] " + message); + SendMessage(player, + "§bCurrent wait time between announcements: " + + PluginMain.AnnounceTime / 60 / 1000 + + " minute(s)§r"); + break; + case "edit": + if (commandblock == null) { + SendMessage( + player, + "§cError: This command can only be used from a command block. Use /u announce remove."); + break; + } + if (args.length < 4) { + commandblock + .sendMessage("§cUsage: /u announce edit "); + return; + } + StringBuilder sb1 = new StringBuilder(); + for (int i1 = 3; i1 < args.length; i1++) { + sb1.append(args[i1]); + if (i1 != args.length - 1) + sb1.append(" "); + } + String finalmessage1 = sb1.toString().replace('&', '§'); + int index = Integer.parseInt(args[2]); + if (index > 100) + break; + while (PluginMain.AnnounceMessages.size() <= index) + PluginMain.AnnounceMessages.add(""); + PluginMain.AnnounceMessages.set(Integer.parseInt(args[2]), + finalmessage1); + commandblock.sendMessage("Announcement edited."); + break; + default: + String message = "§cUsage: /u announce add|remove|settime|list|edit§r"; + SendMessage(player, message); + return; + } + } + } + + @SuppressWarnings("unused") + private static void DoSaveLoadPos(Player player, String[] args) { // 2015.08.09. + // args[0] is "admin" - args[1] is "savepos|loadpos" + if (args.length == 2) { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + Player p = null; + try { + p = Bukkit.getPlayer(args[2]); + } catch (Exception e) { + } + if (!MaybeOfflinePlayer.AllPlayers.containsKey(p.getUniqueId())) { + String message = "§cPlayer not found: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + if (p == null) { + String message = "§cPlayer is not online: " + args[2] + "§r"; + SendMessage(player, message); + return; + } + if (args[1].equalsIgnoreCase("savepos")) { + mp.SavedLocation = p.getLocation(); + } else if (args[1].equalsIgnoreCase("loadpos")) { + if (mp.SavedLocation != null) + p.teleport(mp.SavedLocation); + } else { + String message = "§cUsage: /u admin savepos|loadpos §r"; + SendMessage(player, message); + return; + } + // SendMessage(player, "Player " + p.getName() + + // " position saved/loaded.");s + } + + private static void DoUpdateDynmap(Player player, String[] args) { + // args[0] is "admin" - args[1] is "updatedynmap" + if (args.length == 2) { + String message = "§cUsage: /u admin updatedynmap §r"; + SendMessage(player, message); + return; + } + } + + private static Random random = new Random(); + + public static String KittyCannonMinigame = "KittyCannon"; + + private static void DoKittyCannon(Player player, String[] args) { + if (player == null) { + SendMessage(player, + "§cThis command can only be used by a player.§r"); + return; + } + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(player); + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) { + SendMessage(player, + "§cYou can only use KittyCannon in it's minigame!"); + return; + } + try { + final Mob cat = Mob.OCELOT; + final Ocelot ocelot = (Ocelot) cat.spawn(player.getWorld(), + player.getServer(), player.getEyeLocation()); + if (ocelot == null) { + return; + } + final ArrayList lore = new ArrayList<>(); + lore.add(player.getName()); + final int i = random.nextInt(Ocelot.Type.values().length); + ocelot.setCatType(Ocelot.Type.values()[i]); + ocelot.setTamed(true); + ocelot.setBaby(); + ocelot.addPotionEffect(new PotionEffect( + PotionEffectType.DAMAGE_RESISTANCE, 5, 5)); + ocelot.setVelocity(player.getEyeLocation().getDirection() + .multiply(2)); + Bukkit.getScheduler().scheduleSyncDelayedTask(PluginMain.Instance, + new Runnable() { + @SuppressWarnings("deprecation") + @Override + public void run() { + final Location loc = ocelot.getLocation(); + ocelot.remove(); + loc.getWorld().createExplosion(loc, 0F); + final ItemStack head = new ItemStack( + Material.SKULL_ITEM, 1, (short) 3, (byte) 3); + SkullMeta im = (SkullMeta) head.getItemMeta(); + im.setDisplayName("§rOcelot Head"); + im.setOwner("MHF_Ocelot"); + im.setLore(lore); + head.setItemMeta(im); + loc.getWorld().dropItem(loc, head); + } + }, 20); + } catch (MobException e) { + } + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ff/a0790ee2cf3e001518fa86d7ae2a1cf8 b/.metadata/.plugins/org.eclipse.core.resources/.history/ff/a0790ee2cf3e001518fa86d7ae2a1cf8 new file mode 100644 index 0000000..38374ce --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ff/a0790ee2cf3e001518fa86d7ae2a1cf8 @@ -0,0 +1,196 @@ +package tk.sznp.thebuttonautoflair; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class Commands implements CommandExecutor { + // This method is called, when somebody uses our command + @Override + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { + if (sender instanceof Player) { + Player player = (Player) sender; + if(args.length<1) + return false; + MaybeOfflinePlayer p=MaybeOfflinePlayer.AllPlayers.get(player.getName()); //2015.08.08. + //if(!PluginMain.PlayerFlairs.containsKey(player.getName())) + if(p.Flair==null) + { + player.sendMessage("Error: You need to write your username to the reddit thread at /r/TheButtonMinecraft"); + return true; + } + switch(args[0].toLowerCase()) //toLowerCase: 2015.08.09. + { + case "accept": + { + if(p.IgnoredFlair) + p.IgnoredFlair=false; //2015.08.08. + if(!p.AcceptedFlair) + { + String flair=p.Flair; //2015.08.08. + PluginMain.AppendPlayerDisplayFlairFinal(player, flair); //2015.07.20. + p.AcceptedFlair=true; //2015.08.08. + player.sendMessage("§6Your flair has been set:§r "+flair); + } + else + player.sendMessage("§cYou already have this user's flair.§r"); + break; + } + case "ignore": + { + if(p.AcceptedFlair) + p.AcceptedFlair=false; //2015.08.08. + if(!p.IgnoredFlair) + { + p.IgnoredFlair=true; + String flair=p.Flair; //2015.08.08. + PluginMain.RemovePlayerDisplayFlairFinal(player, flair); //2015.07.20. + player.sendMessage("§6You have ignored this request. You can still use /u accept though.§r"); + } + else + player.sendMessage("§cYou already ignored this request.§r"); + break; + } + /*case "reload": //2015.07.20. + DoReload(player); + break;*/ + case "admin": //2015.08.09. + DoAdmin(player, args); + break; + case "nonpresser": //2015.08.09. + break; + default: + return false; + } + return true; + } + /*if(args[0].toLowerCase()=="reload") + DoReload(null); //2015.07.20.*/ + else if(args.length>0 && args[0].toLowerCase().equals("admin")) //2015.08.09. + { + DoAdmin(null, args); //2015.08.09. + return true; //2015.08.09. + } + return false; + } + private static void DoReload(Player player) + { //2015.07.20. + //if(player==null || player.isOp() || player.getName()=="NorbiPeti") + //{ + try + { + File file=new File("autoflairconfig.txt"); + if(file.exists()) + { + PluginMain.TownColors.clear(); + BufferedReader br=new BufferedReader(new FileReader(file)); + String line; + while((line=br.readLine())!=null) + { + String[] s=line.split(" "); + PluginMain.TownColors.put(s[0], s[1]); + } + br.close(); + for(Player p : PluginMain.GetPlayers()) + { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p.getName()); + if(mp.Flair!=null) + { + String flair=mp.Flair; + PluginMain.RemovePlayerDisplayFlairFinal(p, flair); + PluginMain.AppendPlayerDisplayFlairFinal(p, flair); + } + } + String msg="§6Reloaded config file.§r"; + SendMessage(player, msg); //2015.08.09. + } + } + catch(Exception e) + { + System.out.println("Error!\n"+e); + if(player!=null) + player.sendMessage("§cAn error occured. See console for details.§r"); + PluginMain.LastException=e; //2015.08.09. + } + //} + //else + //player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoAdmin(Player player, String[] args) + { //2015.08.09. + if(player==null || player.isOp() || player.getName()=="NorbiPeti") + { + //System.out.println("Args length: " + args.length); + if(args.length==1) + { + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + //args[0] is "admin" + switch(args[1].toLowerCase()) + { + case "reload": + DoReload(player); + break; + case "playerinfo": + DoPlayerInfo(player, args); + break; + case "getlasterror": + DoGetLastError(player, args); + default: + String message="§cUsage: /u admin reload|playerinfo§r"; + SendMessage(player, message); + return; + } + } + else + player.sendMessage("§cYou need to be OP to use this command.§r"); + } + private static void DoPlayerInfo(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "playerinfo" + if(args.length==2) + { + String message="§cUsage: /u admin playerinfo §r"; + SendMessage(player, message); + return; + } + if(!MaybeOfflinePlayer.AllPlayers.containsKey(args[2])) + { + String message="§cPlayer not found: "+args[2]+"§r"; + SendMessage(player, message); + return; + } + MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(args[2]); + SendMessage(player, "Player name: "+p.PlayerName); + SendMessage(player, "User flair: "+p.Flair); + SendMessage(player, "Username: "+p.UserName); + SendMessage(player, "Flair accepted: "+p.AcceptedFlair); + SendMessage(player, "Flair ignored: "+p.IgnoredFlair); + } + private static void SendMessage(Player player, String message) + { //2015.08.09. + if(player==null) + System.out.println(message); + else + player.sendMessage(message); + } + private static void DoGetLastError(Player player, String[] args) + { //2015.08.09. + //args[0] is "admin" - args[1] is "getlasterror" + if(PluginMain.LastException!=null) + { + SendMessage(player, "Last error:"); + SendMessage(player, PluginMain.LastException.toString()); + PluginMain.LastException=null; + } + else + SendMessage(player, "There were no exceptions."); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.history/ff/a07a53fd4ca600151c15ab42d7919fee b/.metadata/.plugins/org.eclipse.core.resources/.history/ff/a07a53fd4ca600151c15ab42d7919fee new file mode 100644 index 0000000..ba645f8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.history/ff/a07a53fd4ca600151c15ab42d7919fee @@ -0,0 +1,366 @@ +package tk.sznp.thebuttonautoflair; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.configuration.InvalidConfigurationException; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerChatTabCompleteEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import au.com.mineauz.minigames.MinigamePlayer; +import au.com.mineauz.minigames.Minigames; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.UUID; + +public class PlayerListener implements Listener { // 2015.07.16. + public static HashMap nicknames = new HashMap<>(); + + public static boolean Enable = false; // 2015.08.29. + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player p = event.getPlayer(); + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); + mp.PlayerName = p.getName(); // 2015.10.17. 0:58 + if (!mp.FlairState.equals(FlairStates.NoComment)) + // if (false) + PluginMain.ConfirmUserMessage(mp); // 2015.08.09. + else { // 2015.07.20. + Timer timer = new Timer(); + PlayerJoinTimerTask tt = new PlayerJoinTimerTask() { + @Override + public void run() { + if (mp.FlairState.equals(FlairStates.NoComment)) { + String json = "[\"\",{\"text\":\"If you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://www.reddit.com/r/TheButtonMinecraft/comments/3d25do/\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + json = "[\"\",{\"text\":\"If you don't want the flair, type /u ignore to prevent this message after next login.\",\"color\":\"aqua\"}]"; + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Console, + "tellraw " + mp.PlayerName + " " + json); + } + } + }; + tt.mp = mp; + timer.schedule(tt, 15 * 1000); + } + + /* NICKNAME LOGIC */ + + UUID id = p.getUniqueId(); + + File f = new File("plugins/Essentials/userdata/" + id + ".yml"); + if (f.exists()) { + YamlConfiguration yc = new YamlConfiguration(); + try { + yc.load(f); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + String nickname = yc.getString("nickname"); + if (nickname != null) { + nicknames.put(nickname, id); + + if (Enable) { + if (!p.getName().equals("NorbiPeti")) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.chat("Hey, " + nickname + "!"); + break; + } + } + } + } + } + } + + mp.RPMode = true; // 2015.08.25. + + mp.SetFlairColor(mp.GetFlairColor()); //Update display + } + + @EventHandler + public void onPlayerLeave(PlayerQuitEvent event) { + String deletenick = null; + for (String nickname : nicknames.keySet()) { + UUID uuid = nicknames.get(nickname); + if (event.getPlayer().getUniqueId().equals(uuid)) { + deletenick = nickname; + break; + } + } + if (deletenick != null) + nicknames.remove(deletenick); + } + + public static String NotificationSound; // 2015.08.14. + public static double NotificationPitch; // 2015.08.14. + + public static boolean ShowRPTag = false; // 2015.08.31. + + @EventHandler + public void onPlayerChat(AsyncPlayerChatEvent event) { + MaybeOfflinePlayer player = MaybeOfflinePlayer.AllPlayers.get(event + .getPlayer().getUniqueId()); + String flair = player.GetFormattedFlair(); + String message = event.getMessage(); // 2015.08.08. + for (Player p : PluginMain.GetPlayers()) { // 2015.08.12. + String color = ""; // 2015.08.17. + if (message.contains(p.getName())) { + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p + .getUniqueId()); // 2015.08.17. + color = String.format("§%x", (mp.GetFlairColor() == 0x00 ? 0xb + : mp.GetFlairColor())); // TODO: Quiz queue + } + + message = message.replace(p.getName(), color + p.getName() + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + for (String n : nicknames.keySet()) { + Player p = null; + String nwithoutformatting = new String(n); + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (message.contains(nwithoutformatting)) { + p = Bukkit.getPlayer(nicknames.get(n)); + if (NotificationSound == null) + p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1.0f, 0.5f); // 2015.08.12. + else + p.playSound(p.getLocation(), NotificationSound, 1.0f, + (float) NotificationPitch); // 2015.08.14. + MaybeOfflinePlayer.AddPlayerIfNeeded(p.getUniqueId()); // 2015.08.17. + } + if (p != null) { + message = message.replace(nwithoutformatting, n + + (event.getMessage().startsWith("§2>") ? "§2" : "§r")); + } + } + + event.setMessage(message); // 2015.09.05. + + event.setFormat(event + .getFormat() + .replace( + "{rptag}", + (player.RPMode ? (ShowRPTag ? "§2[RP]§r" : "") + : "§8[OOC]§r")) + .replace("{buttonflair}", flair) + .replace( + "{isitwilds}", + (event.getPlayer().getWorld().getName() + .equalsIgnoreCase("wilds") ? "[PVP]" : ""))); // 2015.09.04. + } + + @EventHandler + public void onTabComplete(PlayerChatTabCompleteEvent e) { + String name = e.getLastToken(); + for (String nickname : nicknames.keySet()) { + String nwithoutformatting = nickname; + int index; + while ((index = nwithoutformatting.indexOf("§k")) != -1) + nwithoutformatting = nwithoutformatting.replace("§k" + + nwithoutformatting.charAt(index + 2), ""); // Support + // for + // one + // random + // char + while ((index = nwithoutformatting.indexOf('§')) != -1) + nwithoutformatting = nwithoutformatting.replace("§" + + nwithoutformatting.charAt(index + 1), ""); + if (nwithoutformatting.startsWith(name) + && !nwithoutformatting.equals(Bukkit.getPlayer( + nicknames.get(nickname)).getName())) + e.getTabCompletions().add(nwithoutformatting); + } + } + + public static boolean DebugMode = false; + + public void SendForDebug(String message) { + if (DebugMode) { + for (Player player : PluginMain.GetPlayers()) { + if (player.getName().equals("NorbiPeti")) { + player.sendMessage("[DEBUG] " + message); + break; + } + } + } + } + + private boolean ActiveF = false; + private int FCount = 0; + + @EventHandler + public void onPlayerMessage(AsyncPlayerChatEvent e) { + if (e.getMessage().equalsIgnoreCase("F")) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(e + .getPlayer().getUniqueId()); + if (!mp.PressedF && ActiveF) { + FCount++; + mp.PressedF = true; + } + } + + if (e.getMessage().startsWith(">")) + e.setMessage("§2" + e.getMessage()); + + if (e.getMessage().equalsIgnoreCase("lol")) + Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(e.getPlayer() + .getUniqueId()); + + if (e.getFormat().contains("[g]")) { + StringBuilder sb = new StringBuilder(); + sb.append("tellraw @a [\"\""); + sb.append(",{\"text\":\"Hashtags:\"}"); + int index = -1; + ArrayList list = new ArrayList(); + while ((index = e.getMessage().indexOf("#", index + 1)) != -1) { + int index2 = e.getMessage().indexOf(" ", index + 1); + if (index2 == -1) + index2 = e.getMessage().length(); + int index3 = e.getMessage().indexOf("#", index + 1); + if (index3 != -1 && index3 < index2) // A # occurs before a + // space + index2 = index3; + String original = e.getMessage().substring(index, index2); + list.add(original); + sb.append(",{\"text\":\" \"}"); + sb.append(",{\"text\":\""); + sb.append(original); + sb.append("\",\"color\":\"blue\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"https://twitter.com/hashtag/"); + sb.append(original.substring(1)); + sb.append("\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Open on Twitter\",\"color\":\"blue\"}]}}}"); + } + for (String original : list) + e.setMessage(e.getMessage().replace( + original, + "§9" + + original + + (e.getMessage().startsWith("§2>") ? "§2" + : "§r"))); + /* + * for (String original : list) + * System.out.println(e.getMessage().replace( original, "§9" + + * original + (e.getMessage().startsWith("§2>") ? "§2" : "§r"))); + */ + + sb.append("]"); + + if (list.size() > 0) + PluginMain.Instance.getServer().dispatchCommand( + PluginMain.Instance.getServer().getConsoleSender(), + sb.toString()); + } + } + + private Timer Ftimer; + + @EventHandler + public void onPlayerDeath(PlayerDeathEvent e) { + if (!Minigames.plugin.pdata.getMinigamePlayer(e.getEntity()) + .isInMinigame() && new Random().nextBoolean()) { + if (Ftimer != null) + Ftimer.cancel(); + ActiveF = true; + FCount = 0; + for (Player p : PluginMain.GetPlayers()) { + MaybeOfflinePlayer mp = MaybeOfflinePlayer.AllPlayers.get(p + .getUniqueId()); + mp.PressedF = false; + p.sendMessage("§bPress F to pay respects.§r"); + } + Ftimer = new Timer(); + TimerTask tt = new TimerTask() { + @Override + public void run() { + if (ActiveF) { + ActiveF = false; + for (Player p : PluginMain.GetPlayers()) { + p.sendMessage("§b" + FCount + " " + + (FCount == 1 ? "person" : "people") + + " paid their respects.§r"); + } + } + } + }; + Ftimer.schedule(tt, 15 * 1000); + } + } + + @EventHandler + public void onPlayerItemPickup(PlayerPickupItemEvent e) { + // System.out.println("A"); + MinigamePlayer mp = Minigames.plugin.pdata.getMinigamePlayer(e + .getPlayer()); + // System.out.println("B"); + + /* + * if (!e.getPlayer().isOp() && (!mp.isInMinigame() || + * mp.getMinigame().getName(false) + * .equalsIgnoreCase(Commands.KittyCannonMinigame))) return; + */ + if (!(mp.isInMinigame() && mp.getMinigame().getName(false) + .equalsIgnoreCase(Commands.KittyCannonMinigame))) + return; + // System.out.println("C"); + ItemStack item = e.getItem().getItemStack(); + if (!item.getType().equals(Material.SKULL_ITEM) + && !item.getType().equals(Material.SKULL)) + return; + // System.out.println("D"); + SkullMeta meta = (SkullMeta) item.getItemMeta(); + if (!meta.getDisplayName().equals("§rOcelot Head") + || !meta.getOwner().equals("MHF_Ocelot")) + return; + // System.out.println("E"); + if (meta.getLore() == null || meta.getLore().size() == 0) + return; + // System.out.println("F"); + ItemStack hat = e.getPlayer().getInventory().getHelmet(); + if (!(hat != null + && (hat.getType().equals(Material.SKULL) || hat.getType() + .equals(Material.SKULL_ITEM)) && ((SkullMeta) hat + .getItemMeta()).getDisplayName().equals("§rWolf Head"))) + e.getPlayer().damage(1f * item.getAmount(), + Bukkit.getPlayer(meta.getLore().get(0))); + e.getItem().remove(); + // System.out.println("G"); + e.setCancelled(true); + // System.out.println("H"); + } +} diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.markers.snap b/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.markers.snap new file mode 100644 index 0000000..6fe4a90 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.markers.snap differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.syncinfo.snap b/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.syncinfo.snap new file mode 100644 index 0000000..6fe4a90 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/RemoteSystemsTempFiles/.syncinfo.snap differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/TheButtonAutoFlair/.indexes/e4/77/69/e/history.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/TheButtonAutoFlair/.indexes/e4/77/69/e/history.index new file mode 100644 index 0000000..8ec48cc Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/TheButtonAutoFlair/.indexes/e4/77/69/e/history.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/TheButtonAutoFlair/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.projects/TheButtonAutoFlair/.indexes/properties.index new file mode 100644 index 0000000..9615fea Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/TheButtonAutoFlair/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/TheButtonAutoFlair/.markers b/.metadata/.plugins/org.eclipse.core.resources/.projects/TheButtonAutoFlair/.markers new file mode 100644 index 0000000..8797416 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/TheButtonAutoFlair/.markers differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/TheButtonAutoFlair/.markers.snap b/.metadata/.plugins/org.eclipse.core.resources/.projects/TheButtonAutoFlair/.markers.snap new file mode 100644 index 0000000..bd10177 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/TheButtonAutoFlair/.markers.snap differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.projects/TheButtonAutoFlair/.syncinfo.snap b/.metadata/.plugins/org.eclipse.core.resources/.projects/TheButtonAutoFlair/.syncinfo.snap new file mode 100644 index 0000000..6fe4a90 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.projects/TheButtonAutoFlair/.syncinfo.snap differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version new file mode 100644 index 0000000..25cb955 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index new file mode 100644 index 0000000..c0ff3a4 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap b/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap new file mode 100644 index 0000000..6fe4a90 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.root/.markers.snap differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/98.tree b/.metadata/.plugins/org.eclipse.core.resources/.root/98.tree new file mode 100644 index 0000000..1f77a2d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.root/98.tree differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources new file mode 100644 index 0000000..dfee3f8 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/98.snap b/.metadata/.plugins/org.eclipse.core.resources/98.snap new file mode 100644 index 0000000..a06a9af Binary files /dev/null and b/.metadata/.plugins/org.eclipse.core.resources/98.snap differ diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..dffc6b5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +version=1 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs new file mode 100644 index 0000000..9dd00d6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=\r\n\r\n +preferredTargets=default\:default| diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.help.base.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.help.base.prefs new file mode 100644 index 0000000..baf7806 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.help.base.prefs @@ -0,0 +1,6 @@ +always_external_browser=false +dialog_infopop=false +eclipse.preferences.version=1 +help_view_open_mode=in_place +search_from_browser=false +window_infopop=false diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bee14ad --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.builder.resourceCopyExclusionFilter= +org.eclipse.jdt.core.codeComplete.visibilityCheck=enabled diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs new file mode 100644 index 0000000..e15346f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.launching.PREF_VM_XML=\r\n\r\n\r\n\r\n\r\n\r\n diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000..661b623 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,21 @@ +content_assist_disabled_computers=org.eclipse.jdt.ui.textProposalCategory\u0000org.eclipse.jdt.ui.javaAllProposalCategory\u0000org.eclipse.jdt.ui.javaTypeProposalCategory\u0000org.eclipse.jdt.ui.javaNoTypeProposalCategory\u0000 +content_assist_lru_history= +content_assist_number_of_computers=21 +content_assist_proposals_background=255,255,255 +content_assist_proposals_foreground=0,0,0 +eclipse.preferences.version=1 +fontPropagated=true +markOccurrences=false +org.eclipse.jdt.ui.editor.tab.width= +org.eclipse.jdt.ui.formatterprofiles.version=12 +org.eclipse.jdt.ui.javadoclocations.migrated=true +org.eclipse.jdt.ui.text.code_templates_migrated=true +org.eclipse.jdt.ui.text.custom_code_templates= +org.eclipse.jdt.ui.text.custom_templates= +org.eclipse.jdt.ui.text.templates_migrated=true +org.eclipse.jface.textfont=1|Consolas|10.0|0|WINDOWS|1|0|0|0|0|0|0|0|0|1|0|0|0|0|Consolas; +proposalOrderMigrated=true +spelling_locale_initialized=true +tabWidthPropagated=true +useAnnotationsPrefPage=true +useQuickDiffPrefPage=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jst.j2ee.webservice.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jst.j2ee.webservice.ui.prefs new file mode 100644 index 0000000..553bb96 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jst.j2ee.webservice.ui.prefs @@ -0,0 +1,2 @@ +areThereWebServices=false +eclipse.preferences.version=1 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jst.jsp.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jst.jsp.core.prefs new file mode 100644 index 0000000..66f87be --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jst.jsp.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jst.jsp.core.taglib.TaglibIndex=CLEAN diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.discovery.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.discovery.prefs new file mode 100644 index 0000000..67b1d96 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.discovery.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.m2e.discovery.pref.projects= diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs new file mode 100644 index 0000000..43e97e4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.context.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +mylyn.attention.migrated=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.java.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.java.ui.prefs new file mode 100644 index 0000000..2a6fe50 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.java.ui.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +org.eclipse.mylyn.java.ui.run.count.3_10_0=1 +org.eclipse.mylyn.java.ui.run.count.3_1_0=1 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs new file mode 100644 index 0000000..8d462a6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.ui.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.mylyn.monitor.activity.tracking.enabled.checked=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.tasks.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.tasks.ui.prefs new file mode 100644 index 0000000..5330e43 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.tasks.ui.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +migrated.task.repositories.secure.store=true +org.eclipse.mylyn.tasks.ui.filters.nonmatching=true +org.eclipse.mylyn.tasks.ui.filters.nonmatching.encouraged=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.api.tools.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.api.tools.prefs new file mode 100644 index 0000000..d2ed603 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.api.tools.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +knownEEFragments= diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.core.prefs new file mode 100644 index 0000000..888c64d --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +workspace_target_handle=local\:1449259517199.target diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.ui.prefs new file mode 100644 index 0000000..643105e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.pde.ui.prefs @@ -0,0 +1,2 @@ +Preferences.MainPage.overwriteBuildFilesOnExport=prompt +eclipse.preferences.version=1 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.core.prefs new file mode 100644 index 0000000..c27d8a2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.core.prefs @@ -0,0 +1,4 @@ +activeuserprofiles=NORBI-PC;Team +eclipse.preferences.version=1 +org.eclipse.rse.systemtype.local.systemType.defaultUserId=Norbi +useridperkey=NORBI-PC.Local\=Norbi; diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.ui.prefs new file mode 100644 index 0000000..777efa3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.rse.ui.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.rse.preferences.order.connections=NORBI-PC.Local diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs new file mode 100644 index 0000000..cec65c4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.search.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.search.defaultPerspective=org.eclipse.search.defaultPerspective.none diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.cvs.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.cvs.ui.prefs new file mode 100644 index 0000000..f9e585b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.cvs.ui.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +pref_first_startup=false diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs new file mode 100644 index 0000000..56cd496 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.team.ui.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.team.ui.first_time=false diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs new file mode 100644 index 0000000..61f3bb8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +overviewRuler_migration=migrated_3.1 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs new file mode 100644 index 0000000..3d09974 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs @@ -0,0 +1,8 @@ +IMPORT_FILES_AND_FOLDERS_RELATIVE=true +IMPORT_FILES_AND_FOLDERS_TYPE=23,1 +PROBLEMS_FILTERS_MIGRATE=true +TASKS_FILTERS_MIGRATE=true +eclipse.preferences.version=1 +platformState=1449250075322 +quickStart=false +tipsAndTricks=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs new file mode 100644 index 0000000..08076f2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +showIntro=false diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs new file mode 100644 index 0000000..ad74de0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs @@ -0,0 +1,4 @@ +//org.eclipse.ui.commands/state/org.eclipse.wst.xml.views.XPathView.processor.xpathprocessor/org.eclipse.ui.commands.radioState=xpath10 +ENABLED_DECORATORS=org.eclipse.jst.ws.jaxws.dom.integration.navigator.WebServiceDecorator\:true,org.eclipse.wst.server.ui.decorator\:false,com.android.ide.eclipse.adt.project.FolderDecorator\:true,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.DependencyDecoration\:true,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.ColumnDecoration\:true,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.ForeignKeyDecoration\:true,org.eclipse.datatools.connectivity.sqm.core.internal.ui.explorer.IndexTriggerDecoration\:true,org.eclipse.datatools.connectivity.internal.core.ui.bookmarkDecoration\:true,org.eclipse.datatools.connectivity.internal.core.ui.FilterNodeDecoration\:true,org.eclipse.datatools.connectivity.ui.decorator.contentextension\:false,org.eclipse.datatools.enablement.ingres.ui.providers.decorators.SynonymDecorationService\:true,org.eclipse.datatools.enablement.ingres.internal.ui.providers.decorators.ParameterDecorationService\:true,org.eclipse.datatools.enablement.sybase.asa.proxytabledecorator\:true,org.eclipse.datatools.enablement.sybase.ase.webservicetabledecorator\:true,org.eclipse.datatools.enablement.sybase.systemtabledecorator\:true,org.eclipse.egit.ui.internal.decorators.GitLightweightDecorator\:true,org.eclipse.jdt.ui.override.decorator\:true,org.eclipse.jdt.ui.interface.decorator\:false,org.eclipse.jdt.ui.buildpath.decorator\:true,org.eclipse.jst.j2ee.internal.ui.util.AnnotationIconDecorator_ejb\:true,org.eclipse.jst.j2ee.navigator.internal.J2EEProjectDecorator\:true,org.eclipse.jst.jee.ui.internal.navigator.ejb.BeanDecorator\:true,org.eclipse.jst.jee.navigator.internal.JEEProjectDecorator\:true,org.eclipse.jst.j2ee.internal.ui.util.AnnotationIconDecorator_servlet\:true,org.eclipse.jst.servlet.ui.Decorator\:true,org.eclipse.mylyn.context.ui.decorator.interest\:true,org.eclipse.mylyn.tasks.ui.decorators.task\:true,org.eclipse.mylyn.team.ui.changeset.decorator\:true,org.eclipse.pde.ui.binaryProjectDecorator\:false,org.eclipse.rse.core.virtualobject.decorator\:true,org.eclipse.rse.core.binary.executable.decorator\:true,org.eclipse.rse.core.script.executable.decorator\:true,org.eclipse.rse.core.java.executable.decorator\:true,org.eclipse.rse.core.library.decorator\:true,org.eclipse.rse.core.link.decorator\:true,org.eclipse.rse.subsystems.error.decorator\:true,org.eclipse.team.cvs.ui.decorator\:true,org.eclipse.ui.LinkedResourceDecorator\:true,org.eclipse.ui.VirtualResourceDecorator\:true,org.eclipse.ui.ContentTypeDecorator\:true,org.eclipse.ui.ResourceFilterDecorator\:false,org.eclipse.wst.jsdt.ui.override.decorator\:true,org.eclipse.wst.server.ui.navigatorDecorator\:true, +PLUGINS_NOT_ACTIVATED_ON_STARTUP=org.eclipse.m2e.discovery; +eclipse.preferences.version=1 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.jsdt.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.jsdt.ui.prefs new file mode 100644 index 0000000..a092597 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.jsdt.ui.prefs @@ -0,0 +1,10 @@ +eclipse.preferences.version=1 +fontPropagated=true +org.eclipse.jface.textfont=1|Consolas|10.0|0|WINDOWS|1|0|0|0|0|0|0|0|0|1|0|0|0|0|Consolas; +org.eclipse.wst.jsdt.ui.editor.tab.width= +org.eclipse.wst.jsdt.ui.formatterprofiles.version=11 +org.eclipse.wst.jsdt.ui.javadoclocations.migrated=true +proposalOrderMigrated=true +tabWidthPropagated=true +useAnnotationsPrefPage=true +useQuickDiffPrefPage=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.sse.core.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.sse.core.prefs new file mode 100644 index 0000000..a23b194 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.sse.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +task-tag-projects-already-scanned=RemoteSystemsTempFiles,TheButtonAutoFlair diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.sse.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.sse.ui.prefs new file mode 100644 index 0000000..5c6ef69 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.sse.ui.prefs @@ -0,0 +1,4 @@ +content_assist_number_of_computers=18 +eclipse.preferences.version=1 +useAnnotationsPrefPage=true +useQuickDiffPrefPage=true diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.ws.service.policy.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.ws.service.policy.prefs new file mode 100644 index 0000000..6696959 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.ws.service.policy.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +org.eclipse.wst.ws.service.policy.ui.servicepols.wsiprofilecomp.wsiap.defaultProtocol=http\://schemas.xmlsoap.org/wsdl/soap/ +org.eclipse.wst.ws.service.policy.ui.servicepols.wsiprofilecomp.wsissbp.defaultProtocol=http\://schemas.xmlsoap.org/wsdl/soap/ diff --git a/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml new file mode 100644 index 0000000..bc1657f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml @@ -0,0 +1,18 @@ + +
+
+ + + +
+
+ + + +
+
+ + + +
+
diff --git a/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi new file mode 100644 index 0000000..e963ea8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi @@ -0,0 +1,3227 @@ + + + + activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration + ModelMigrationProcessor.001 + + + + + + topLevel + shellMaximized + + + + + persp.actionSet:org.eclipse.mylyn.context.ui.actionSet + persp.actionSet:org.eclipse.mylyn.doc.actionSet + persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.rse.core.search.searchActionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.actionSet:org.eclipse.jst.j2ee.J2eeMainActionSet + persp.actionSet:org.eclipse.jdt.ui.JavaActionSet + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.actionSet:org.eclipse.debug.ui.debugActionSet + persp.actionSet:org.eclipse.ui.NavigateActionSet + persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.wst.server.ui.ServersView + persp.viewSC:org.eclipse.datatools.connectivity.DataSourceExplorerNavigator + persp.viewSC:org.eclipse.ui.views.BookmarkView + persp.viewSC:org.eclipse.ui.views.ContentOutline + persp.viewSC:org.eclipse.ui.views.PropertySheet + persp.viewSC:org.eclipse.ui.views.ResourceNavigator + persp.viewSC:org.eclipse.wst.common.snippets.internal.ui.SnippetsView + persp.viewSC:org.eclipse.ui.views.AllMarkersView + persp.viewSC:org.eclipse.mylyn.tasks.ui.views.tasks + persp.viewSC:org.eclipse.search.ui.views.SearchView + persp.viewSC:org.eclipse.ui.console.ConsoleView + persp.showIn:org.eclipse.ui.navigator.ProjectExplorer + persp.newWizSC:org.eclipse.jpt.jpa.ui.wizard.newJpaProject + persp.perspSC:org.eclipse.jpt.ui.jpaPerspective + persp.perspSC:org.eclipse.debug.ui.DebugPerspective + persp.perspSC:org.eclipse.jdt.ui.JavaPerspective + persp.perspSC:org.eclipse.ui.resourcePerspective + persp.perspSC:org.eclipse.wst.web.ui.webDevPerspective + persp.newWizSC:org.eclipse.jst.j2ee.ui.project.facet.EarProjectWizard + persp.newWizSC:org.eclipse.jst.servlet.ui.project.facet.WebProjectWizard + persp.newWizSC:org.eclipse.jst.ejb.ui.project.facet.EjbProjectWizard + persp.newWizSC:org.eclipse.jst.j2ee.jca.ui.internal.wizard.ConnectorProjectWizard + persp.newWizSC:org.eclipse.jst.j2ee.ui.project.facet.appclient.AppClientProjectWizard + persp.newWizSC:org.eclipse.wst.web.ui.internal.wizards.SimpleWebProjectWizard + persp.newWizSC:org.eclipse.jpt.ui.wizard.newJpaProject + persp.newWizSC:org.eclipse.jst.servlet.ui.internal.wizard.AddServletWizard + persp.newWizSC:org.eclipse.jst.ejb.ui.internal.wizard.AddSessionBeanWizard + persp.newWizSC:org.eclipse.jst.ejb.ui.internal.wizard.AddMessageDrivenBeanWizard + persp.newWizSC:org.eclipse.jpt.ui.wizard.newEntity + persp.newWizSC:org.eclipse.jst.ws.creation.ui.wizard.serverwizard + persp.newWizSC:org.eclipse.ui.wizards.new.folder + persp.newWizSC:org.eclipse.ui.wizards.new.file + persp.actionSet:org.eclipse.wst.server.ui.internal.webbrowser.actionSet + persp.actionSet:org.eclipse.debug.ui.breakpointActionSet + persp.actionSet:org.eclipse.wst.ws.explorer.explorer + + + newtablook + + + + + + + + + + newtablook + + + + + + newtablook + + + + + + + + + + + + + + + + + + persp.actionSet:org.eclipse.mylyn.context.ui.actionSet + persp.actionSet:org.eclipse.mylyn.doc.actionSet + persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.rse.core.search.searchActionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.actionSet:org.eclipse.jdt.ui.JavaActionSet + persp.actionSet:org.eclipse.jdt.ui.JavaElementCreationActionSet + persp.actionSet:org.eclipse.ui.NavigateActionSet + persp.viewSC:org.eclipse.jdt.ui.PackageExplorer + persp.viewSC:org.eclipse.jdt.ui.TypeHierarchy + persp.viewSC:org.eclipse.jdt.ui.SourceView + persp.viewSC:org.eclipse.jdt.ui.JavadocView + persp.viewSC:org.eclipse.search.ui.views.SearchView + persp.viewSC:org.eclipse.ui.console.ConsoleView + persp.viewSC:org.eclipse.ui.views.ContentOutline + persp.viewSC:org.eclipse.ui.views.ProblemView + persp.viewSC:org.eclipse.ui.views.ResourceNavigator + persp.viewSC:org.eclipse.ui.views.TaskList + persp.viewSC:org.eclipse.ui.views.ProgressView + persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.ui.texteditor.TemplatesView + persp.viewSC:org.eclipse.pde.runtime.LogView + persp.newWizSC:org.eclipse.jdt.ui.wizards.JavaProjectWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewPackageCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewClassCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewInterfaceCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewEnumCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewAnnotationCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSourceFolderCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSnippetFileCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewJavaWorkingSetWizard + persp.newWizSC:org.eclipse.ui.wizards.new.folder + persp.newWizSC:org.eclipse.ui.wizards.new.file + persp.newWizSC:org.eclipse.ui.editors.wizards.UntitledTextFileWizard + persp.perspSC:org.eclipse.jdt.ui.JavaBrowsingPerspective + persp.perspSC:org.eclipse.debug.ui.DebugPerspective + persp.newWizSC:com.android.ide.eclipse.adt.project.NewProjectWizard + persp.newWizSC:com.android.ide.eclipse.editors.wizards.NewXmlFileWizard + persp.actionSet:adt.actionSet.wizards + persp.actionSet:adt.actionSet.avdManager + persp.actionSet:adt.actionSet.lint + persp.actionSet:adt.actionSet.refactorings + persp.perspSC:com.android.ide.eclipse.ddms.Perspective + persp.perspSC:com.android.ide.eclipse.hierarchyviewer.PixelPerfectPespective + persp.perspSC:com.android.ide.eclipse.hierarchyviewer.TreeViewPerspective + persp.viewSC:org.eclipse.ant.ui.views.AntView + persp.showIn:org.eclipse.egit.ui.RepositoriesView + persp.actionSet:org.eclipse.debug.ui.breakpointActionSet + persp.actionSet:org.eclipse.jdt.debug.ui.JDTDebugActionSet + persp.newWizSC:org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard + persp.actionSet:org.eclipse.jdt.junit.JUnitActionSet + persp.showIn:org.eclipse.jdt.ui.PackageExplorer + persp.showIn:org.eclipse.team.ui.GenericHistoryView + persp.showIn:org.eclipse.ui.views.ResourceNavigator + persp.showIn:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.mylyn.tasks.ui.views.tasks + persp.newWizSC:org.eclipse.mylyn.tasks.ui.wizards.new.repository.task + persp.perspSC:org.eclipse.wst.jsdt.ui.JavaPerspective + + + + newtablook + org.eclipse.e4.primaryNavigationStack + + + + + + + + newtablook + + + + + + + + + newtablook + + + + newtablook + org.eclipse.e4.secondaryNavigationStack + + + + + + + + newtablook + org.eclipse.e4.secondaryDataStack + + + + + + + + + + + + + + + + + + + + + View + categoryTag:Help + + ViewMenu + menuContribution:menu + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + View + categoryTag:Help + + + + newtablook + org.eclipse.e4.primaryDataStack + EditorStack + active + + + Editor + org.eclipse.jdt.ui.CompilationUnitEditor + removeOnHide + + menuContribution:popup + popup:#CompilationUnitEditorContext + popup:org.eclipse.jdt.ui.CompilationUnitEditor.EditorContext + popup:#AbstractTextEditorContext + + + menuContribution:popup + popup:#CompilationUnitRulerContext + popup:org.eclipse.jdt.ui.CompilationUnitEditor.RulerContext + popup:#AbstractTextEditorRulerContext + + + menuContribution:popup + popup:#OverviewRulerContext + + + + + Editor + org.eclipse.jdt.ui.CompilationUnitEditor + removeOnHide + + menuContribution:popup + popup:#CompilationUnitEditorContext + popup:org.eclipse.jdt.ui.CompilationUnitEditor.EditorContext + popup:#AbstractTextEditorContext + + + menuContribution:popup + popup:#CompilationUnitRulerContext + popup:org.eclipse.jdt.ui.CompilationUnitEditor.RulerContext + popup:#AbstractTextEditorRulerContext + + + menuContribution:popup + popup:#OverviewRulerContext + + + + + Editor + org.eclipse.jdt.ui.CompilationUnitEditor + removeOnHide + + + + Editor + org.eclipse.ui.DefaultTextEditor + removeOnHide + + menuContribution:popup + popup:#TextEditorContext + popup:org.eclipse.ui.DefaultTextEditor.EditorContext + popup:#AbstractTextEditorContext + + + menuContribution:popup + popup:#TextRulerContext + popup:org.eclipse.ui.DefaultTextEditor.RulerContext + popup:#AbstractTextEditorRulerContext + + + menuContribution:popup + popup:#OverviewRulerContext + + + + + Editor + org.eclipse.jdt.ui.CompilationUnitEditor + removeOnHide + active + + menuContribution:popup + popup:#CompilationUnitEditorContext + popup:org.eclipse.jdt.ui.CompilationUnitEditor.EditorContext + popup:#AbstractTextEditorContext + + + menuContribution:popup + popup:#CompilationUnitRulerContext + popup:org.eclipse.jdt.ui.CompilationUnitEditor.RulerContext + popup:#AbstractTextEditorRulerContext + + + menuContribution:popup + popup:#OverviewRulerContext + + + + + Editor + org.eclipse.jdt.ui.CompilationUnitEditor + removeOnHide + + menuContribution:popup + popup:#CompilationUnitEditorContext + popup:org.eclipse.jdt.ui.CompilationUnitEditor.EditorContext + popup:#AbstractTextEditorContext + + + menuContribution:popup + popup:#CompilationUnitRulerContext + popup:org.eclipse.jdt.ui.CompilationUnitEditor.RulerContext + popup:#AbstractTextEditorRulerContext + + + menuContribution:popup + popup:#OverviewRulerContext + + + + + Editor + org.eclipse.jdt.ui.CompilationUnitEditor + removeOnHide + + + + Editor + org.eclipse.m2e.editor.MavenPomEditor + removeOnHide + + + + Editor + org.eclipse.jdt.ui.CompilationUnitEditor + removeOnHide + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + View + categoryTag:General + + + View + categoryTag:Java + + ViewMenu + menuContribution:menu + + + + + View + categoryTag:Java Browsing + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + View + categoryTag:General + + + View + categoryTag:Server + + + View + categoryTag:Data Management + + + View + categoryTag:General + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + menuContribution:popup + popup:org.eclipse.ui.views.ProblemView + popup:org.eclipse.ui.ide.MarkersView + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + menuContribution:popup + popup:org.eclipse.ui.views.TaskList + popup:org.eclipse.ui.ide.MarkersView + + + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + View + categoryTag:Mylyn + + ViewMenu + menuContribution:menu + + + + + + View + categoryTag:Java + + ViewMenu + menuContribution:menu + + + menuContribution:popup + popup:org.eclipse.jdt.ui.PackageExplorer + + + + + + View + categoryTag:Java + + ViewMenu + menuContribution:menu + + + + + + View + categoryTag:Java + + ViewMenu + menuContribution:menu + + + + + View + categoryTag:General + + + View + categoryTag:Ant + + + View + categoryTag:Git + + + View + categoryTag:Java + + + + toolbarSeparator + + + + Draggable + + Opaque + + + Opaque + + + Opaque + + + Opaque + + + Opaque + + + Opaque + + + Opaque + + + + Opaque + + + Opaque + + + Opaque + + + Opaque + + + + toolbarSeparator + + + + Draggable + + + Draggable + + + Draggable + + + Draggable + + + Draggable + + Opaque + + + Opaque + + + Opaque + + + Opaque + + + + Draggable + + Opaque + + + Opaque + + + Opaque + + + Opaque + + + + Draggable + + + Draggable + + Opaque + + + Opaque + + + Opaque + + + Opaque + + + + Draggable + + Opaque + + + Opaque + + + Opaque + + + Opaque + + + Opaque + + + Opaque + + + Opaque + + + + Draggable + + + Draggable + + + toolbarSeparator + + + + Draggable + + Opaque + + + Opaque + + + Opaque + + + Opaque + + + Opaque + + + + Opaque + + + Opaque + + + Opaque + + + + Draggable + + + Draggable + + + toolbarSeparator + + + + toolbarSeparator + + + + Draggable + + Opaque + + + Opaque + + + + stretch + SHOW_RESTORE_MENU + + + Draggable + HIDEABLE + SHOW_RESTORE_MENU + + + + + stretch + + + + Draggable + + + + + TrimStack + + + + + TrimStack + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + platform:win32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Editor + + + View + categoryTag:Ant + + + View + categoryTag:Data Management + + + View + categoryTag:Data Management + + + View + categoryTag:Data Management + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + View + categoryTag:Git + + + View + categoryTag:Git + + + View + categoryTag:Git + + + View + categoryTag:Git + + + View + categoryTag:General + + + View + categoryTag:Help + + + View + categoryTag:Debug + + + View + categoryTag:Java + + + View + categoryTag:Java + + + View + categoryTag:Java + + + View + categoryTag:Java Browsing + + + View + categoryTag:Java Browsing + + + View + categoryTag:Java Browsing + + + View + categoryTag:Java Browsing + + + View + categoryTag:Java + + + View + categoryTag:General + + + View + categoryTag:Java + + + View + categoryTag:Java + + + View + categoryTag:JPA + + + View + categoryTag:JPA + + + View + categoryTag:JavaServer Faces + + + View + categoryTag:JavaServer Faces + + + View + categoryTag:JAX-WS + categoryTag:Web Services + + + View + categoryTag:Mylyn + + + View + categoryTag:Mylyn + + + View + categoryTag:Mylyn + + + View + categoryTag:API Tools + + + View + categoryTag:Plug-in Development + + + View + categoryTag:Plug-in Development + + + View + categoryTag:Plug-in Development + + + View + categoryTag:Plug-in Development + + + View + categoryTag:Remote Systems + + + View + categoryTag:Remote Systems + + + View + categoryTag:Remote Systems + + + View + categoryTag:Remote Systems + + + View + categoryTag:Remote Systems + + + View + categoryTag:Remote Systems + + + View + categoryTag:Remote Systems + + + View + categoryTag:Remote Systems + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:CVS + + + View + categoryTag:CVS + + + View + categoryTag:Team + + + View + categoryTag:Team + + + View + categoryTag:Terminal + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Help + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Debug + + + View + categoryTag:JavaScript + + + View + categoryTag:JavaScript + + + View + categoryTag:JavaScript + + + View + categoryTag:JavaScript + + + View + categoryTag:JavaScript + + + View + categoryTag:Server + + + View + categoryTag:XML + + + View + categoryTag:XML + + + View + categoryTag:XML + + + View + categoryTag:XML + + + View + categoryTag:XML + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Tracer for OpenGL ES + + + View + categoryTag:Tracer for OpenGL ES + + + View + categoryTag:Tracer for OpenGL ES + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Android + + + View + categoryTag:Git + + + View + categoryTag:Maven + + + View + categoryTag:Maven + + + View + categoryTag:Plug-in Development + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml new file mode 100644 index 0000000..e847c8f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.equinox.p2.ui/dialog_settings.xml @@ -0,0 +1,62 @@ + +
+
+ + + + + +
+
+ + + + + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
diff --git a/.metadata/.plugins/org.eclipse.help.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.help.ui/dialog_settings.xml new file mode 100644 index 0000000..5ca0b77 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.help.ui/dialog_settings.xml @@ -0,0 +1,3 @@ + +
+
diff --git a/.metadata/.plugins/org.eclipse.help.ui/scope_sets/Adding_32_a_32_new_32_software_32_site.hist b/.metadata/.plugins/org.eclipse.help.ui/scope_sets/Adding_32_a_32_new_32_software_32_site.hist new file mode 100644 index 0000000..d3a80ff --- /dev/null +++ b/.metadata/.plugins/org.eclipse.help.ui/scope_sets/Adding_32_a_32_new_32_software_32_site.hist @@ -0,0 +1,6 @@ +#Fri Dec 04 17:41:46 CET 2015 +__DEFAULT__=false +org.eclipse.sdk.Eclipse.master=true +org.eclipse.sdk.Google.master=true +org.eclipse.help.ui.localSearch.master=true +expression=Adding a new software site diff --git a/.metadata/.plugins/org.eclipse.help.ui/scope_sets/Default.pref b/.metadata/.plugins/org.eclipse.help.ui/scope_sets/Default.pref new file mode 100644 index 0000000..ec6ade3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.help.ui/scope_sets/Default.pref @@ -0,0 +1,2 @@ +#Fri Dec 04 17:41:40 CET 2015 +__DEFAULT__=true diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1233791618.index b/.metadata/.plugins/org.eclipse.jdt.core/1233791618.index new file mode 100644 index 0000000..0160259 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1233791618.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1429456332.index b/.metadata/.plugins/org.eclipse.jdt.core/1429456332.index new file mode 100644 index 0000000..6a298f0 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1429456332.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1508644233.index b/.metadata/.plugins/org.eclipse.jdt.core/1508644233.index new file mode 100644 index 0000000..19d5b53 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1508644233.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1528680760.index b/.metadata/.plugins/org.eclipse.jdt.core/1528680760.index new file mode 100644 index 0000000..ae69821 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1528680760.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1737447423.index b/.metadata/.plugins/org.eclipse.jdt.core/1737447423.index new file mode 100644 index 0000000..0ab3d4b Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1737447423.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1770465405.index b/.metadata/.plugins/org.eclipse.jdt.core/1770465405.index new file mode 100644 index 0000000..a89d291 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1770465405.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/185975254.index b/.metadata/.plugins/org.eclipse.jdt.core/185975254.index new file mode 100644 index 0000000..dcfa7fa Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/185975254.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1870255979.index b/.metadata/.plugins/org.eclipse.jdt.core/1870255979.index new file mode 100644 index 0000000..4e7c5a6 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1870255979.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1923297441.index b/.metadata/.plugins/org.eclipse.jdt.core/1923297441.index new file mode 100644 index 0000000..c5dfdef Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1923297441.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1934142626.index b/.metadata/.plugins/org.eclipse.jdt.core/1934142626.index new file mode 100644 index 0000000..143d006 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/1934142626.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2089000613.index b/.metadata/.plugins/org.eclipse.jdt.core/2089000613.index new file mode 100644 index 0000000..0fecfb8 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2089000613.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2161397272.index b/.metadata/.plugins/org.eclipse.jdt.core/2161397272.index new file mode 100644 index 0000000..66d9fb8 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2161397272.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2216672097.index b/.metadata/.plugins/org.eclipse.jdt.core/2216672097.index new file mode 100644 index 0000000..3f85484 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2216672097.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2292250293.index b/.metadata/.plugins/org.eclipse.jdt.core/2292250293.index new file mode 100644 index 0000000..db63949 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2292250293.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2345470644.index b/.metadata/.plugins/org.eclipse.jdt.core/2345470644.index new file mode 100644 index 0000000..3816c53 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2345470644.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2690778029.index b/.metadata/.plugins/org.eclipse.jdt.core/2690778029.index new file mode 100644 index 0000000..2e537ae Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2690778029.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2899965704.index b/.metadata/.plugins/org.eclipse.jdt.core/2899965704.index new file mode 100644 index 0000000..e594a39 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2899965704.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/2959957318.index b/.metadata/.plugins/org.eclipse.jdt.core/2959957318.index new file mode 100644 index 0000000..7f92335 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/2959957318.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3000975533.index b/.metadata/.plugins/org.eclipse.jdt.core/3000975533.index new file mode 100644 index 0000000..dee50a6 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3000975533.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3089967703.index b/.metadata/.plugins/org.eclipse.jdt.core/3089967703.index new file mode 100644 index 0000000..37c3176 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3089967703.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3260353738.index b/.metadata/.plugins/org.eclipse.jdt.core/3260353738.index new file mode 100644 index 0000000..d17f1c7 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3260353738.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3349413686.index b/.metadata/.plugins/org.eclipse.jdt.core/3349413686.index new file mode 100644 index 0000000..4314294 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3349413686.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3403918450.index b/.metadata/.plugins/org.eclipse.jdt.core/3403918450.index new file mode 100644 index 0000000..4824140 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3403918450.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3414683811.index b/.metadata/.plugins/org.eclipse.jdt.core/3414683811.index new file mode 100644 index 0000000..e43133f Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3414683811.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/348382339.index b/.metadata/.plugins/org.eclipse.jdt.core/348382339.index new file mode 100644 index 0000000..1afe896 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/348382339.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3499141547.index b/.metadata/.plugins/org.eclipse.jdt.core/3499141547.index new file mode 100644 index 0000000..cd533e4 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3499141547.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3618673065.index b/.metadata/.plugins/org.eclipse.jdt.core/3618673065.index new file mode 100644 index 0000000..7ba0980 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3618673065.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3699979211.index b/.metadata/.plugins/org.eclipse.jdt.core/3699979211.index new file mode 100644 index 0000000..e41a79b Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3699979211.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3706135349.index b/.metadata/.plugins/org.eclipse.jdt.core/3706135349.index new file mode 100644 index 0000000..0ab3d4b Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3706135349.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/375642920.index b/.metadata/.plugins/org.eclipse.jdt.core/375642920.index new file mode 100644 index 0000000..0d50c39 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/375642920.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/3917394261.index b/.metadata/.plugins/org.eclipse.jdt.core/3917394261.index new file mode 100644 index 0000000..d525696 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/3917394261.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/4020602821.index b/.metadata/.plugins/org.eclipse.jdt.core/4020602821.index new file mode 100644 index 0000000..274baa3 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/4020602821.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/452330869.index b/.metadata/.plugins/org.eclipse.jdt.core/452330869.index new file mode 100644 index 0000000..873c504 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/452330869.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/50372563.index b/.metadata/.plugins/org.eclipse.jdt.core/50372563.index new file mode 100644 index 0000000..48036e5 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/50372563.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/51467596.index b/.metadata/.plugins/org.eclipse.jdt.core/51467596.index new file mode 100644 index 0000000..b5247b8 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/51467596.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/638224934.index b/.metadata/.plugins/org.eclipse.jdt.core/638224934.index new file mode 100644 index 0000000..0c52f21 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/638224934.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/678131303.index b/.metadata/.plugins/org.eclipse.jdt.core/678131303.index new file mode 100644 index 0000000..5ebd324 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/678131303.index differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache b/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache b/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache new file mode 100644 index 0000000..265dac2 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps b/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps new file mode 100644 index 0000000..449eaa2 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/indexNamesMap.txt b/.metadata/.plugins/org.eclipse.jdt.core/indexNamesMap.txt new file mode 100644 index 0000000..32e47ed --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.core/indexNamesMap.txt @@ -0,0 +1 @@ +INDEX VERSION 1.127 diff --git a/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache b/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/invalidArchivesCache differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt b/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt new file mode 100644 index 0000000..8586397 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt @@ -0,0 +1 @@ +java \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache b/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache new file mode 100644 index 0000000..d7e1b92 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache differ diff --git a/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt b/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt new file mode 100644 index 0000000..cef26f3 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt @@ -0,0 +1,38 @@ +INDEX VERSION 1.127+D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\.metadata\.plugins\org.eclipse.jdt.core +4020602821.index +3706135349.index +2161397272.index +185975254.index +2089000613.index +1429456332.index +1528680760.index +1233791618.index +3403918450.index +1934142626.index +3699979211.index +2959957318.index +2292250293.index +2690778029.index +2899965704.index +3089967703.index +1508644233.index +3000975533.index +3349413686.index +1770465405.index +2345470644.index +3260353738.index +51467596.index +50372563.index +348382339.index +375642920.index +1870255979.index +3499141547.index +3414683811.index +1737447423.index +452330869.index +1923297441.index +638224934.index +3618673065.index +678131303.index +3917394261.index +2216672097.index diff --git a/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat b/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat new file mode 100644 index 0000000..8803a1f Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat differ diff --git a/.metadata/.plugins/org.eclipse.jdt.debug.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.jdt.debug.ui/dialog_settings.xml new file mode 100644 index 0000000..0c26fde --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.debug.ui/dialog_settings.xml @@ -0,0 +1,14 @@ + +
+
+ + +
+ + + + + +
+
+
diff --git a/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml b/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml new file mode 100644 index 0000000..e765dd8 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml b/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml new file mode 100644 index 0000000..f2dc5f6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml b/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml new file mode 100644 index 0000000..a4ee3cb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml @@ -0,0 +1,2 @@ + + diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml new file mode 100644 index 0000000..b425bb5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml new file mode 100644 index 0000000..01e8988 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml @@ -0,0 +1,89 @@ + +
+ + + + + + + +
+ + + + + +
+
+ + + + + +
+
+ + + +
+
+ +
+
+ + + + +
+
+ + +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ + + +
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/0.png b/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/0.png new file mode 100644 index 0000000..d198a93 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/0.png differ diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/1.png b/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/1.png new file mode 100644 index 0000000..a930fe1 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/1.png differ diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/2.png b/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/2.png new file mode 100644 index 0000000..a6abcd8 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/2.png differ diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/3.png b/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/3.png new file mode 100644 index 0000000..476665e Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/3.png differ diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/4.png b/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/4.png new file mode 100644 index 0000000..a95f608 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/4.png differ diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/5.png b/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/5.png new file mode 100644 index 0000000..834bd74 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/5.png differ diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/6.png b/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/6.png new file mode 100644 index 0000000..2856a9f Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jdt.ui/jdt-images/6.png differ diff --git a/.metadata/.plugins/org.eclipse.jst.jsp.core/taglibindex/1508644233.dat b/.metadata/.plugins/org.eclipse.jst.jsp.core/taglibindex/1508644233.dat new file mode 100644 index 0000000..eac0f18 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.jst.jsp.core/taglibindex/1508644233.dat differ diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2015/7/29/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2015/7/29/refactorings.history new file mode 100644 index 0000000..37c35e5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2015/7/29/refactorings.history @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2015/7/29/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2015/7/29/refactorings.index new file mode 100644 index 0000000..6c53ce2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/.workspace/2015/7/29/refactorings.index @@ -0,0 +1 @@ +1436966989747 Delete resource 'TheButtonAutoFlair' diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/11/48/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/11/48/refactorings.history new file mode 100644 index 0000000..9959929 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/11/48/refactorings.history @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/11/48/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/11/48/refactorings.index new file mode 100644 index 0000000..734064c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/11/48/refactorings.index @@ -0,0 +1,2 @@ +1448747636805 Rename method 'AppendPlayerDisplayFlair' +1448747652243 Rename method 'ConfirmUser' diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/12/49/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/12/49/refactorings.history new file mode 100644 index 0000000..75929d9 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/12/49/refactorings.history @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/12/49/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/12/49/refactorings.index new file mode 100644 index 0000000..6fd5e22 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/12/49/refactorings.index @@ -0,0 +1,11 @@ +1449089015654 Rename resource 'licence.txt' +1449247009743 Move file +1449247024495 Move folder +1449247029089 Move folder +1449247033263 Move folder +1449247073652 Delete element +1449253392509 Move file +1449257439002 Move file +1449259040981 Move file +1449260191910 Delete element +1449262180986 Delete element diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/7/29/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/7/29/refactorings.history new file mode 100644 index 0000000..e000f4e --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/7/29/refactorings.history @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/7/29/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/7/29/refactorings.index new file mode 100644 index 0000000..a8676c0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/7/29/refactorings.index @@ -0,0 +1,3 @@ +1436981792569 Move folder +1437034536865 Delete element +1437041052403 Rename type 'CommandKit' diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/8/32/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/8/32/refactorings.history new file mode 100644 index 0000000..d388da2 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/8/32/refactorings.history @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/8/32/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/8/32/refactorings.index new file mode 100644 index 0000000..707fa27 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/8/32/refactorings.index @@ -0,0 +1 @@ +1439082947025 Delete element diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/8/35/refactorings.history b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/8/35/refactorings.history new file mode 100644 index 0000000..bd51724 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/8/35/refactorings.history @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/8/35/refactorings.index b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/8/35/refactorings.index new file mode 100644 index 0000000..e385272 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/TheButtonAutoFlair/2015/8/35/refactorings.index @@ -0,0 +1 @@ +1440800831420 Delete element diff --git a/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml new file mode 100644 index 0000000..a0ee1a7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml @@ -0,0 +1,9 @@ + +
+
+ + +
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.m2e.core.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.m2e.core.ui/dialog_settings.xml new file mode 100644 index 0000000..2b78360 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.m2e.core.ui/dialog_settings.xml @@ -0,0 +1,47 @@ + +
+
+
+
+ + + + + + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + + + + + + + + + +
+
+ + + + +
+
diff --git a/.metadata/.plugins/org.eclipse.m2e.core/TheButtonAutoFlair.lifecyclemapping b/.metadata/.plugins/org.eclipse.m2e.core/TheButtonAutoFlair.lifecyclemapping new file mode 100644 index 0000000..ef6e026 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/TheButtonAutoFlair.lifecyclemapping differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_0.cfs b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_0.cfs new file mode 100644 index 0000000..10c0c85 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_0.cfs differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_0_1.del b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_0_1.del new file mode 100644 index 0000000..1b473bd Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_0_1.del differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_1.cfs b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_1.cfs new file mode 100644 index 0000000..d32dbba Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_1.cfs differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_1_1.del b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_1_1.del new file mode 100644 index 0000000..1b473bd Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_1_1.del differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_2.cfs b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_2.cfs new file mode 100644 index 0000000..d9c1008 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_2.cfs differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_2_1.del b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_2_1.del new file mode 100644 index 0000000..1b473bd Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_2_1.del differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_3.cfs b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_3.cfs new file mode 100644 index 0000000..514c166 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_3.cfs differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_3_1.del b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_3_1.del new file mode 100644 index 0000000..1b473bd Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_3_1.del differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_4.cfs b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_4.cfs new file mode 100644 index 0000000..3537921 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_4.cfs differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_4_1.del b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_4_1.del new file mode 100644 index 0000000..1b473bd Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_4_1.del differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_5.cfs b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_5.cfs new file mode 100644 index 0000000..2880d34 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_5.cfs differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_5_1.del b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_5_1.del new file mode 100644 index 0000000..1b473bd Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_5_1.del differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_6.cfs b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_6.cfs new file mode 100644 index 0000000..a11f8aa Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_6.cfs differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_6_1.del b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_6_1.del new file mode 100644 index 0000000..1b473bd Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_6_1.del differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_7.cfs b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_7.cfs new file mode 100644 index 0000000..2cb041f Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_7.cfs differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_7_1.del b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_7_1.del new file mode 100644 index 0000000..1b473bd Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_7_1.del differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_8.cfs b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_8.cfs new file mode 100644 index 0000000..cd34683 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/_8.cfs differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/segments.gen b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/segments.gen new file mode 100644 index 0000000..9b44cac Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/segments.gen differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/segments_a b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/segments_a new file mode 100644 index 0000000..b14d3ec Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/segments_a differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/write.lock b/.metadata/.plugins/org.eclipse.m2e.core/nexus/05b0fe8524860bd73cbb07ef30fb34cc/write.lock new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/22105a57205d73c52610d4dcad1b9155/_a.cfs b/.metadata/.plugins/org.eclipse.m2e.core/nexus/22105a57205d73c52610d4dcad1b9155/_a.cfs new file mode 100644 index 0000000..6f4d3b1 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/22105a57205d73c52610d4dcad1b9155/_a.cfs differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/22105a57205d73c52610d4dcad1b9155/segments.gen b/.metadata/.plugins/org.eclipse.m2e.core/nexus/22105a57205d73c52610d4dcad1b9155/segments.gen new file mode 100644 index 0000000..0f09d75 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/22105a57205d73c52610d4dcad1b9155/segments.gen differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/22105a57205d73c52610d4dcad1b9155/segments_b b/.metadata/.plugins/org.eclipse.m2e.core/nexus/22105a57205d73c52610d4dcad1b9155/segments_b new file mode 100644 index 0000000..6bbf79e Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/22105a57205d73c52610d4dcad1b9155/segments_b differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/22105a57205d73c52610d4dcad1b9155/write.lock b/.metadata/.plugins/org.eclipse.m2e.core/nexus/22105a57205d73c52610d4dcad1b9155/write.lock new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/_k.cfs b/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/_k.cfs new file mode 100644 index 0000000..b6f4c07 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/_k.cfs differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/_k_1.del b/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/_k_1.del new file mode 100644 index 0000000..d5508e6 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/_k_1.del differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/_l.cfs b/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/_l.cfs new file mode 100644 index 0000000..72e12a1 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/_l.cfs differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/segments.gen b/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/segments.gen new file mode 100644 index 0000000..957630d Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/segments.gen differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/segments_l b/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/segments_l new file mode 100644 index 0000000..40c7616 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/segments_l differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/write.lock b/.metadata/.plugins/org.eclipse.m2e.core/nexus/830bc118332e77292949ed1e6d2fabe0/write.lock new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/_2s.cfs b/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/_2s.cfs new file mode 100644 index 0000000..cb89803 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/_2s.cfs differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/_2s_2.del b/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/_2s_2.del new file mode 100644 index 0000000..29cc953 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/_2s_2.del differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/_2t.cfs b/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/_2t.cfs new file mode 100644 index 0000000..35451db Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/_2t.cfs differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/_2u.cfs b/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/_2u.cfs new file mode 100644 index 0000000..91ff2b1 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/_2u.cfs differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/segments.gen b/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/segments.gen new file mode 100644 index 0000000..6405bf8 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/segments.gen differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/segments_2m b/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/segments_2m new file mode 100644 index 0000000..ae5cd0a Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/segments_2m differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/write.lock b/.metadata/.plugins/org.eclipse.m2e.core/nexus/fab537b4c93f73529419b6d1f7adf1ae/write.lock new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.m2e.core/workspaceState.ser b/.metadata/.plugins/org.eclipse.m2e.core/workspaceState.ser new file mode 100644 index 0000000..2340d0c Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.core/workspaceState.ser differ diff --git a/.metadata/.plugins/org.eclipse.m2e.core/workspacestate.properties b/.metadata/.plugins/org.eclipse.m2e.core/workspacestate.properties new file mode 100644 index 0000000..661d364 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.m2e.core/workspacestate.properties @@ -0,0 +1,4 @@ +#Fri Dec 04 21:56:30 CET 2015 +tk.sznp\:TheButtonMCPlugin\:jar\:tests\:0.0.1-SNAPSHOT=D\:\\Z - Norbi cucca\\0 Projektek\\TheButtonMCAutoFlairProto\\Spigot plugin\\TheButtonAutoFlair\\target\\test-classes +tk.sznp\:TheButtonMCPlugin\:pom\:\:0.0.1-SNAPSHOT=D\:\\Z - Norbi cucca\\0 Projektek\\TheButtonMCAutoFlairProto\\Spigot plugin\\TheButtonAutoFlair\\pom.xml +tk.sznp\:TheButtonMCPlugin\:jar\:\:0.0.1-SNAPSHOT=D\:\\Z - Norbi cucca\\0 Projektek\\TheButtonMCAutoFlairProto\\Spigot plugin\\TheButtonAutoFlair\\target\\classes diff --git a/.metadata/.plugins/org.eclipse.m2e.jdt/TheButtonAutoFlair.container b/.metadata/.plugins/org.eclipse.m2e.jdt/TheButtonAutoFlair.container new file mode 100644 index 0000000..42e9428 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.m2e.jdt/TheButtonAutoFlair.container differ diff --git a/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log b/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log new file mode 100644 index 0000000..52f7fc0 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log @@ -0,0 +1,1662 @@ +2015-12-04 18:49:29,913 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar +2015-12-04 18:49:30,014 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar +2015-12-04 18:49:30,534 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.jar +2015-12-04 18:49:30,672 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.jar +2015-12-04 18:49:31,018 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/3.3/maven-compiler-plugin-3.3.jar +2015-12-04 18:49:31,129 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/3.3/maven-compiler-plugin-3.3.jar +2015-12-04 18:49:31,501 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-surefire-plugin/2.12.4/maven-surefire-plugin-2.12.4.jar +2015-12-04 18:49:31,561 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-surefire-plugin/2.12.4/maven-surefire-plugin-2.12.4.jar +2015-12-04 18:49:31,864 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.jar +2015-12-04 18:49:31,993 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.jar +2015-12-04 18:49:32,749 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-install-plugin/2.4/maven-install-plugin-2.4.jar +2015-12-04 18:49:32,813 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-install-plugin/2.4/maven-install-plugin-2.4.jar +2015-12-04 18:49:33,116 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-deploy-plugin/2.7/maven-deploy-plugin-2.7.jar +2015-12-04 18:49:33,179 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-deploy-plugin/2.7/maven-deploy-plugin-2.7.jar +2015-12-04 18:49:33,491 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-site-plugin/3.3/maven-site-plugin-3.3.jar +2015-12-04 18:49:33,751 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-site-plugin/3.3/maven-site-plugin-3.3.jar +2015-12-04 18:49:35,431 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/3.3/maven-compiler-plugin-3.3.pom +2015-12-04 18:49:35,491 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/3.3/maven-compiler-plugin-3.3.pom +2015-12-04 18:49:35,551 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/27/maven-plugins-27.pom +2015-12-04 18:49:35,632 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/27/maven-plugins-27.pom +2015-12-04 18:49:35,687 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/26/maven-parent-26.pom +2015-12-04 18:49:35,790 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/26/maven-parent-26.pom +2015-12-04 18:49:35,850 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/apache/16/apache-16.pom +2015-12-04 18:49:35,917 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/apache/16/apache-16.pom +2015-12-04 18:49:36,034 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-api/2.2.1/maven-plugin-api-2.2.1.pom +2015-12-04 18:49:36,077 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-api/2.2.1/maven-plugin-api-2.2.1.pom +2015-12-04 18:49:36,123 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven/2.2.1/maven-2.2.1.pom +2015-12-04 18:49:36,197 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven/2.2.1/maven-2.2.1.pom +2015-12-04 18:49:36,246 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/11/maven-parent-11.pom +2015-12-04 18:49:36,335 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/11/maven-parent-11.pom +2015-12-04 18:49:36,384 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/apache/5/apache-5.pom +2015-12-04 18:49:36,431 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/apache/5/apache-5.pom +2015-12-04 18:49:36,487 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom +2015-12-04 18:49:36,531 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom +2015-12-04 18:49:36,600 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.pom +2015-12-04 18:49:36,649 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.pom +2015-12-04 18:49:36,721 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom +2015-12-04 18:49:36,771 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom +2015-12-04 18:49:36,823 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-core/2.2.1/maven-core-2.2.1.pom +2015-12-04 18:49:36,880 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-core/2.2.1/maven-core-2.2.1.pom +2015-12-04 18:49:36,938 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom +2015-12-04 18:49:36,981 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom +2015-12-04 18:49:37,040 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-model/2.2.1/maven-model-2.2.1.pom +2015-12-04 18:49:37,091 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-model/2.2.1/maven-model-2.2.1.pom +2015-12-04 18:49:37,142 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.pom +2015-12-04 18:49:37,184 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.pom +2015-12-04 18:49:37,235 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.1.14/plexus-components-1.1.14.pom +2015-12-04 18:49:37,284 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.1.14/plexus-components-1.1.14.pom +2015-12-04 18:49:37,335 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter/2.2.1/maven-plugin-parameter-documenter-2.2.1.pom +2015-12-04 18:49:37,384 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter/2.2.1/maven-plugin-parameter-documenter-2.2.1.pom +2015-12-04 18:49:37,442 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.pom +2015-12-04 18:49:37,487 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.pom +2015-12-04 18:49:37,538 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.5.6/slf4j-parent-1.5.6.pom +2015-12-04 18:49:38,157 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.5.6/slf4j-parent-1.5.6.pom +2015-12-04 18:49:38,219 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.5.6/slf4j-api-1.5.6.pom +2015-12-04 18:49:38,502 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.5.6/slf4j-api-1.5.6.pom +2015-12-04 18:49:38,694 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/slf4j/jcl-over-slf4j/1.5.6/jcl-over-slf4j-1.5.6.pom +2015-12-04 18:49:38,772 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/slf4j/jcl-over-slf4j/1.5.6/jcl-over-slf4j-1.5.6.pom +2015-12-04 18:49:38,828 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-profile/2.2.1/maven-profile-2.2.1.pom +2015-12-04 18:49:38,872 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-profile/2.2.1/maven-profile-2.2.1.pom +2015-12-04 18:49:38,931 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-repository-metadata/2.2.1/maven-repository-metadata-2.2.1.pom +2015-12-04 18:49:38,972 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-repository-metadata/2.2.1/maven-repository-metadata-2.2.1.pom +2015-12-04 18:49:39,023 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-error-diagnostics/2.2.1/maven-error-diagnostics-2.2.1.pom +2015-12-04 18:49:39,069 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-error-diagnostics/2.2.1/maven-error-diagnostics-2.2.1.pom +2015-12-04 18:49:39,125 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-project/2.2.1/maven-project-2.2.1.pom +2015-12-04 18:49:39,174 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-project/2.2.1/maven-project-2.2.1.pom +2015-12-04 18:49:39,232 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact-manager/2.2.1/maven-artifact-manager-2.2.1.pom +2015-12-04 18:49:39,871 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact-manager/2.2.1/maven-artifact-manager-2.2.1.pom +2015-12-04 18:49:39,935 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom +2015-12-04 18:49:40,185 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom +2015-12-04 18:49:40,252 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-registry/2.2.1/maven-plugin-registry-2.2.1.pom +2015-12-04 18:49:40,292 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-registry/2.2.1/maven-plugin-registry-2.2.1.pom +2015-12-04 18:49:40,343 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-descriptor/2.2.1/maven-plugin-descriptor-2.2.1.pom +2015-12-04 18:49:40,397 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-descriptor/2.2.1/maven-plugin-descriptor-2.2.1.pom +2015-12-04 18:49:40,459 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-monitor/2.2.1/maven-monitor-2.2.1.pom +2015-12-04 18:49:40,502 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-monitor/2.2.1/maven-monitor-2.2.1.pom +2015-12-04 18:49:40,561 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.pom +2015-12-04 18:49:40,603 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.pom +2015-12-04 18:49:40,664 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/sonatype/spice/spice-parent/12/spice-parent-12.pom +2015-12-04 18:49:40,707 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/sonatype/spice/spice-parent/12/spice-parent-12.pom +2015-12-04 18:49:40,769 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/4/forge-parent-4.pom +2015-12-04 18:49:40,816 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/4/forge-parent-4.pom +2015-12-04 18:49:40,867 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.pom +2015-12-04 18:49:40,919 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.pom +2015-12-04 18:49:40,968 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom +2015-12-04 18:49:41,026 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom +2015-12-04 18:49:41,084 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.pom +2015-12-04 18:49:41,128 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.pom +2015-12-04 18:49:41,188 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-toolchain/2.2.1/maven-toolchain-2.2.1.pom +2015-12-04 18:49:41,232 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-toolchain/2.2.1/maven-toolchain-2.2.1.pom +2015-12-04 18:49:41,294 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.pom +2015-12-04 18:49:41,341 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.pom +2015-12-04 18:49:41,393 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom +2015-12-04 18:49:41,438 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom +2015-12-04 18:49:41,493 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom +2015-12-04 18:49:41,537 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom +2015-12-04 18:49:41,590 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.pom +2015-12-04 18:49:41,636 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.pom +2015-12-04 18:49:41,694 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom +2015-12-04 18:49:41,740 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom +2015-12-04 18:49:41,798 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom +2015-12-04 18:49:41,842 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom +2015-12-04 18:49:41,898 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/reporting/maven-reporting-api/2.2.1/maven-reporting-api-2.2.1.pom +2015-12-04 18:49:41,942 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/reporting/maven-reporting-api/2.2.1/maven-reporting-api-2.2.1.pom +2015-12-04 18:49:41,994 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/reporting/maven-reporting/2.2.1/maven-reporting-2.2.1.pom +2015-12-04 18:49:42,039 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/reporting/maven-reporting/2.2.1/maven-reporting-2.2.1.pom +2015-12-04 18:49:42,095 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/doxia/doxia-sink-api/1.1/doxia-sink-api-1.1.pom +2015-12-04 18:49:42,139 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/doxia/doxia-sink-api/1.1/doxia-sink-api-1.1.pom +2015-12-04 18:49:42,210 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/doxia/doxia/1.1/doxia-1.1.pom +2015-12-04 18:49:42,249 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/doxia/doxia/1.1/doxia-1.1.pom +2015-12-04 18:49:42,334 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/doxia/doxia-logging-api/1.1/doxia-logging-api-1.1.pom +2015-12-04 18:49:42,417 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/doxia/doxia-logging-api/1.1/doxia-logging-api-1.1.pom +2015-12-04 18:49:42,477 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.pom +2015-12-04 18:49:42,518 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.pom +2015-12-04 18:49:42,566 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.0-alpha-30/plexus-containers-1.0-alpha-30.pom +2015-12-04 18:49:42,628 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.0-alpha-30/plexus-containers-1.0-alpha-30.pom +2015-12-04 18:49:42,680 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom +2015-12-04 18:49:42,721 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom +2015-12-04 18:49:42,773 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/plexus-classworlds-1.2-alpha-9.pom +2015-12-04 18:49:42,869 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/plexus-classworlds-1.2-alpha-9.pom +2015-12-04 18:49:42,921 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom +2015-12-04 18:49:43,022 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom +2015-12-04 18:49:43,072 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/commons-cli/commons-cli/1.2/commons-cli-1.2.pom +2015-12-04 18:49:43,150 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/commons-cli/commons-cli/1.2/commons-cli-1.2.pom +2015-12-04 18:49:43,198 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/11/commons-parent-11.pom +2015-12-04 18:49:43,276 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/11/commons-parent-11.pom +2015-12-04 18:49:43,332 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/apache/4/apache-4.pom +2015-12-04 18:49:43,372 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/apache/4/apache-4.pom +2015-12-04 18:49:43,433 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.pom +2015-12-04 18:49:43,480 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.pom +2015-12-04 18:49:43,532 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/classworlds/classworlds/1.1/classworlds-1.1.pom +2015-12-04 18:49:43,574 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/classworlds/classworlds/1.1/classworlds-1.1.pom +2015-12-04 18:49:43,621 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-utils/0.7/maven-shared-utils-0.7.pom +2015-12-04 18:49:43,692 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-utils/0.7/maven-shared-utils-0.7.pom +2015-12-04 18:49:43,740 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-components/20/maven-shared-components-20.pom +2015-12-04 18:49:43,788 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-components/20/maven-shared-components-20.pom +2015-12-04 18:49:43,833 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/24/maven-parent-24.pom +2015-12-04 18:49:44,510 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/24/maven-parent-24.pom +2015-12-04 18:49:44,597 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/apache/14/apache-14.pom +2015-12-04 18:49:44,640 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/apache/14/apache-14.pom +2015-12-04 18:49:44,850 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.pom +2015-12-04 18:49:45,148 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.pom +2015-12-04 18:49:45,551 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-incremental/1.1/maven-shared-incremental-1.1.pom +2015-12-04 18:49:45,828 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-incremental/1.1/maven-shared-incremental-1.1.pom +2015-12-04 18:49:45,890 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-components/19/maven-shared-components-19.pom +2015-12-04 18:49:45,937 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-components/19/maven-shared-components-19.pom +2015-12-04 18:49:46,014 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/23/maven-parent-23.pom +2015-12-04 18:49:46,080 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/23/maven-parent-23.pom +2015-12-04 18:49:46,151 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/apache/13/apache-13.pom +2015-12-04 18:49:46,203 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/apache/13/apache-13.pom +2015-12-04 18:49:46,263 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-utils/0.1/maven-shared-utils-0.1.pom +2015-12-04 18:49:46,307 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-utils/0.1/maven-shared-utils-0.1.pom +2015-12-04 18:49:46,358 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-components/18/maven-shared-components-18.pom +2015-12-04 18:49:46,411 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-components/18/maven-shared-components-18.pom +2015-12-04 18:49:46,463 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/22/maven-parent-22.pom +2015-12-04 18:49:46,553 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/22/maven-parent-22.pom +2015-12-04 18:49:46,626 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/apache/11/apache-11.pom +2015-12-04 18:49:46,669 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/apache/11/apache-11.pom +2015-12-04 18:49:46,729 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.pom +2015-12-04 18:49:46,772 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.pom +2015-12-04 18:49:46,876 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.5.5/plexus-containers-1.5.5.pom +2015-12-04 18:49:46,919 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.5.5/plexus-containers-1.5.5.pom +2015-12-04 18:49:46,966 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom +2015-12-04 18:49:47,262 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom +2015-12-04 18:49:47,312 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compiler-api/2.5/plexus-compiler-api-2.5.pom +2015-12-04 18:49:47,356 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compiler-api/2.5/plexus-compiler-api-2.5.pom +2015-12-04 18:49:47,405 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compiler/2.5/plexus-compiler-2.5.pom +2015-12-04 18:49:47,455 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compiler/2.5/plexus-compiler-2.5.pom +2015-12-04 18:49:47,510 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.3.1/plexus-components-1.3.1.pom +2015-12-04 18:49:47,555 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.3.1/plexus-components-1.3.1.pom +2015-12-04 18:49:47,602 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/3.3.1/plexus-3.3.1.pom +2015-12-04 18:49:47,675 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/3.3.1/plexus-3.3.1.pom +2015-12-04 18:49:47,727 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/sonatype/spice/spice-parent/17/spice-parent-17.pom +2015-12-04 18:49:47,774 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/sonatype/spice/spice-parent/17/spice-parent-17.pom +2015-12-04 18:49:47,820 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/10/forge-parent-10.pom +2015-12-04 18:49:47,879 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/10/forge-parent-10.pom +2015-12-04 18:49:47,932 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.10/plexus-utils-3.0.10.pom +2015-12-04 18:49:47,976 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.10/plexus-utils-3.0.10.pom +2015-12-04 18:49:48,024 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/3.3/plexus-3.3.pom +2015-12-04 18:49:48,099 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/3.3/plexus-3.3.pom +2015-12-04 18:49:48,157 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compiler-manager/2.5/plexus-compiler-manager-2.5.pom +2015-12-04 18:49:48,206 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compiler-manager/2.5/plexus-compiler-manager-2.5.pom +2015-12-04 18:49:48,263 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compiler-javac/2.5/plexus-compiler-javac-2.5.pom +2015-12-04 18:49:48,306 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compiler-javac/2.5/plexus-compiler-javac-2.5.pom +2015-12-04 18:49:48,359 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compilers/2.5/plexus-compilers-2.5.pom +2015-12-04 18:49:48,403 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compilers/2.5/plexus-compilers-2.5.pom +2015-12-04 18:49:48,491 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.pom +2015-12-04 18:49:48,536 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.pom +2015-12-04 18:49:48,600 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.pom +2015-12-04 18:49:48,647 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.pom +2015-12-04 18:49:48,697 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.3/plexus-2.0.3.pom +2015-12-04 18:49:48,816 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.3/plexus-2.0.3.pom +2015-12-04 18:49:48,876 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.pom +2015-12-04 18:49:48,927 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.pom +2015-12-04 18:49:48,982 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/xbean/xbean/3.4/xbean-3.4.pom +2015-12-04 18:49:49,052 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/xbean/xbean/3.4/xbean-3.4.pom +2015-12-04 18:49:49,106 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/log4j/log4j/1.2.12/log4j-1.2.12.pom +2015-12-04 18:49:49,149 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/log4j/log4j/1.2.12/log4j-1.2.12.pom +2015-12-04 18:49:49,201 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.pom +2015-12-04 18:49:49,253 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.pom +2015-12-04 18:49:49,307 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/com/google/collections/google-collections/1.0/google-collections-1.0.pom +2015-12-04 18:49:49,352 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/com/google/collections/google-collections/1.0/google-collections-1.0.pom +2015-12-04 18:49:49,403 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/com/google/google/1/google-1.pom +2015-12-04 18:49:49,446 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/com/google/google/1/google-1.pom +2015-12-04 18:49:49,495 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/junit/junit/3.8.2/junit-3.8.2.pom +2015-12-04 18:49:49,541 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/junit/junit/3.8.2/junit-3.8.2.pom +2015-12-04 18:49:49,653 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-api/2.2.1/maven-plugin-api-2.2.1.jar +2015-12-04 18:49:49,710 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-api/2.2.1/maven-plugin-api-2.2.1.jar +2015-12-04 18:49:49,747 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.jar +2015-12-04 18:49:49,912 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.jar +2015-12-04 18:49:49,975 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.jar +2015-12-04 18:49:50,333 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.jar +2015-12-04 18:49:50,369 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-core/2.2.1/maven-core-2.2.1.jar +2015-12-04 18:49:50,684 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-core/2.2.1/maven-core-2.2.1.jar +2015-12-04 18:49:50,727 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar +2015-12-04 18:49:50,843 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.jar +2015-12-04 18:49:50,885 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.jar +2015-12-04 18:49:51,007 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.jar +2015-12-04 18:49:51,050 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter/2.2.1/maven-plugin-parameter-documenter-2.2.1.jar +2015-12-04 18:49:51,129 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter/2.2.1/maven-plugin-parameter-documenter-2.2.1.jar +2015-12-04 18:49:51,171 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.jar +2015-12-04 18:49:51,221 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.jar +2015-12-04 18:49:51,257 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.5.6/slf4j-api-1.5.6.jar +2015-12-04 18:49:51,331 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.5.6/slf4j-api-1.5.6.jar +2015-12-04 18:49:51,368 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/slf4j/jcl-over-slf4j/1.5.6/jcl-over-slf4j-1.5.6.jar +2015-12-04 18:49:51,445 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/slf4j/jcl-over-slf4j/1.5.6/jcl-over-slf4j-1.5.6.jar +2015-12-04 18:49:51,483 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-profile/2.2.1/maven-profile-2.2.1.jar +2015-12-04 18:49:51,580 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-profile/2.2.1/maven-profile-2.2.1.jar +2015-12-04 18:49:51,644 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-model/2.2.1/maven-model-2.2.1.jar +2015-12-04 18:49:51,795 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-model/2.2.1/maven-model-2.2.1.jar +2015-12-04 18:49:51,834 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-repository-metadata/2.2.1/maven-repository-metadata-2.2.1.jar +2015-12-04 18:49:51,913 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-repository-metadata/2.2.1/maven-repository-metadata-2.2.1.jar +2015-12-04 18:49:51,949 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-error-diagnostics/2.2.1/maven-error-diagnostics-2.2.1.jar +2015-12-04 18:49:52,010 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-error-diagnostics/2.2.1/maven-error-diagnostics-2.2.1.jar +2015-12-04 18:49:52,047 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-project/2.2.1/maven-project-2.2.1.jar +2015-12-04 18:49:52,323 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-project/2.2.1/maven-project-2.2.1.jar +2015-12-04 18:49:52,383 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-registry/2.2.1/maven-plugin-registry-2.2.1.jar +2015-12-04 18:49:52,445 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-registry/2.2.1/maven-plugin-registry-2.2.1.jar +2015-12-04 18:49:52,484 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-descriptor/2.2.1/maven-plugin-descriptor-2.2.1.jar +2015-12-04 18:49:52,585 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-descriptor/2.2.1/maven-plugin-descriptor-2.2.1.jar +2015-12-04 18:49:52,625 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact-manager/2.2.1/maven-artifact-manager-2.2.1.jar +2015-12-04 18:49:52,770 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact-manager/2.2.1/maven-artifact-manager-2.2.1.jar +2015-12-04 18:49:52,835 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar +2015-12-04 18:49:53,351 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar +2015-12-04 18:49:53,406 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-monitor/2.2.1/maven-monitor-2.2.1.jar +2015-12-04 18:49:53,448 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-monitor/2.2.1/maven-monitor-2.2.1.jar +2015-12-04 18:49:53,509 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar +2015-12-04 18:49:53,568 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar +2015-12-04 18:49:53,607 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar +2015-12-04 18:49:53,665 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar +2015-12-04 18:49:53,701 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-toolchain/2.2.1/maven-toolchain-2.2.1.jar +2015-12-04 18:49:53,816 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-toolchain/2.2.1/maven-toolchain-2.2.1.jar +2015-12-04 18:49:53,885 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-utils/0.7/maven-shared-utils-0.7.jar +2015-12-04 18:49:54,159 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-utils/0.7/maven-shared-utils-0.7.jar +2015-12-04 18:49:54,196 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar +2015-12-04 18:49:54,287 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar +2015-12-04 18:49:54,348 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-incremental/1.1/maven-shared-incremental-1.1.jar +2015-12-04 18:49:54,394 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-incremental/1.1/maven-shared-incremental-1.1.jar +2015-12-04 18:49:54,434 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar +2015-12-04 18:49:54,485 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar +2015-12-04 18:49:54,525 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compiler-api/2.5/plexus-compiler-api-2.5.jar +2015-12-04 18:49:54,605 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compiler-api/2.5/plexus-compiler-api-2.5.jar +2015-12-04 18:49:54,647 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compiler-manager/2.5/plexus-compiler-manager-2.5.jar +2015-12-04 18:49:54,697 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compiler-manager/2.5/plexus-compiler-manager-2.5.jar +2015-12-04 18:49:54,737 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compiler-javac/2.5/plexus-compiler-javac-2.5.jar +2015-12-04 18:49:54,808 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-compiler-javac/2.5/plexus-compiler-javac-2.5.jar +2015-12-04 18:49:54,846 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.jar +2015-12-04 18:49:55,213 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.jar +2015-12-04 18:49:55,275 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.jar +2015-12-04 18:49:55,386 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.jar +2015-12-04 18:49:55,423 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.jar +2015-12-04 18:49:55,663 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.jar +2015-12-04 18:49:55,725 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/log4j/log4j/1.2.12/log4j-1.2.12.jar +2015-12-04 18:49:56,281 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/log4j/log4j/1.2.12/log4j-1.2.12.jar +2015-12-04 18:49:56,318 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar +2015-12-04 18:49:56,426 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar +2015-12-04 18:49:56,487 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/com/google/collections/google-collections/1.0/google-collections-1.0.jar +2015-12-04 18:49:57,468 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/com/google/collections/google-collections/1.0/google-collections-1.0.jar +2015-12-04 18:49:57,529 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/junit/junit/3.8.2/junit-3.8.2.jar +2015-12-04 18:49:57,724 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/junit/junit/3.8.2/junit-3.8.2.jar +2015-12-04 18:50:12,541 [Worker-12] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: TheButtonMCPlugin:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 18:50:13,026 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom +2015-12-04 18:50:13,087 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom +2015-12-04 18:50:13,138 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/23/maven-plugins-23.pom +2015-12-04 18:50:13,231 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-plugins/23/maven-plugins-23.pom +2015-12-04 18:50:13,822 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom +2015-12-04 18:50:13,865 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom +2015-12-04 18:50:13,944 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven/2.0.6/maven-2.0.6.pom +2015-12-04 18:50:14,030 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven/2.0.6/maven-2.0.6.pom +2015-12-04 18:50:14,175 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/5/maven-parent-5.pom +2015-12-04 18:50:14,266 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/5/maven-parent-5.pom +2015-12-04 18:50:14,336 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/apache/3/apache-3.pom +2015-12-04 18:50:14,381 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/apache/3/apache-3.pom +2015-12-04 18:50:14,434 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.pom +2015-12-04 18:50:14,476 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.pom +2015-12-04 18:50:14,541 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.pom +2015-12-04 18:50:14,588 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.pom +2015-12-04 18:50:14,656 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.pom +2015-12-04 18:50:14,701 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.pom +2015-12-04 18:50:14,786 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.4.1/plexus-utils-1.4.1.pom +2015-12-04 18:50:14,826 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.4.1/plexus-utils-1.4.1.pom +2015-12-04 18:50:14,881 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.pom +2015-12-04 18:50:14,923 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.pom +2015-12-04 18:50:14,979 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.pom +2015-12-04 18:50:15,022 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.pom +2015-12-04 18:50:15,079 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.pom +2015-12-04 18:50:15,124 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.pom +2015-12-04 18:50:15,179 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.pom +2015-12-04 18:50:15,222 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.pom +2015-12-04 18:50:15,274 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.pom +2015-12-04 18:50:15,317 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.pom +2015-12-04 18:50:15,371 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.pom +2015-12-04 18:50:15,416 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.pom +2015-12-04 18:50:15,469 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.pom +2015-12-04 18:50:15,511 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.pom +2015-12-04 18:50:15,565 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.pom +2015-12-04 18:50:15,609 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.pom +2015-12-04 18:50:15,658 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/reporting/maven-reporting/2.0.6/maven-reporting-2.0.6.pom +2015-12-04 18:50:15,701 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/reporting/maven-reporting/2.0.6/maven-reporting-2.0.6.pom +2015-12-04 18:50:15,750 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.pom +2015-12-04 18:50:15,791 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.pom +2015-12-04 18:50:15,845 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/doxia/doxia/1.0-alpha-7/doxia-1.0-alpha-7.pom +2015-12-04 18:50:15,887 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/doxia/doxia/1.0-alpha-7/doxia-1.0-alpha-7.pom +2015-12-04 18:50:15,938 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.pom +2015-12-04 18:50:15,979 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.pom +2015-12-04 18:50:16,029 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/commons-cli/commons-cli/1.0/commons-cli-1.0.pom +2015-12-04 18:50:16,069 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/commons-cli/commons-cli/1.0/commons-cli-1.0.pom +2015-12-04 18:50:16,120 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.pom +2015-12-04 18:50:16,165 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.pom +2015-12-04 18:50:16,216 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.pom +2015-12-04 18:50:16,258 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.pom +2015-12-04 18:50:16,312 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom +2015-12-04 18:50:16,396 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom +2015-12-04 18:50:16,444 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.6/plexus-2.0.6.pom +2015-12-04 18:50:16,579 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.6/plexus-2.0.6.pom +2015-12-04 18:50:16,647 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-filtering/1.1/maven-filtering-1.1.pom +2015-12-04 18:50:16,689 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-filtering/1.1/maven-filtering-1.1.pom +2015-12-04 18:50:16,735 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-components/17/maven-shared-components-17.pom +2015-12-04 18:50:16,800 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-components/17/maven-shared-components-17.pom +2015-12-04 18:50:16,864 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/21/maven-parent-21.pom +2015-12-04 18:50:16,926 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/21/maven-parent-21.pom +2015-12-04 18:50:16,971 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/apache/10/apache-10.pom +2015-12-04 18:50:17,031 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/apache/10/apache-10.pom +2015-12-04 18:50:17,081 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.pom +2015-12-04 18:50:17,123 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.pom +2015-12-04 18:50:17,181 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.pom +2015-12-04 18:50:17,222 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.pom +2015-12-04 18:50:17,273 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/sonatype/spice/spice-parent/10/spice-parent-10.pom +2015-12-04 18:50:17,318 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/sonatype/spice/spice-parent/10/spice-parent-10.pom +2015-12-04 18:50:17,369 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/3/forge-parent-3.pom +2015-12-04 18:50:17,410 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/3/forge-parent-3.pom +2015-12-04 18:50:17,458 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.pom +2015-12-04 18:50:17,511 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.pom +2015-12-04 18:50:17,565 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.pom +2015-12-04 18:50:17,628 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.pom +2015-12-04 18:50:17,699 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.1.15/plexus-components-1.1.15.pom +2015-12-04 18:50:17,740 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.1.15/plexus-components-1.1.15.pom +2015-12-04 18:50:17,829 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.jar +2015-12-04 18:50:17,893 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.jar +2015-12-04 18:50:17,929 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.jar +2015-12-04 18:50:18,145 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.jar +2015-12-04 18:50:18,181 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.jar +2015-12-04 18:50:18,277 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.jar +2015-12-04 18:50:18,342 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.jar +2015-12-04 18:50:18,471 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.jar +2015-12-04 18:50:18,535 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.jar +2015-12-04 18:50:18,599 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.jar +2015-12-04 18:50:18,638 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.jar +2015-12-04 18:50:18,912 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.jar +2015-12-04 18:50:18,954 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.jar +2015-12-04 18:50:19,029 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.jar +2015-12-04 18:50:19,084 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.jar +2015-12-04 18:50:19,128 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.jar +2015-12-04 18:50:19,169 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar +2015-12-04 18:50:19,220 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar +2015-12-04 18:50:19,284 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.jar +2015-12-04 18:50:19,340 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.jar +2015-12-04 18:50:19,380 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.jar +2015-12-04 18:50:19,487 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.jar +2015-12-04 18:50:19,529 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/commons-cli/commons-cli/1.0/commons-cli-1.0.jar +2015-12-04 18:50:19,615 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/commons-cli/commons-cli/1.0/commons-cli-1.0.jar +2015-12-04 18:50:19,655 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.jar +2015-12-04 18:50:19,754 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.jar +2015-12-04 18:50:19,812 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar +2015-12-04 18:50:19,877 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar +2015-12-04 18:50:19,917 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/classworlds/classworlds/1.1/classworlds-1.1.jar +2015-12-04 18:50:20,020 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/classworlds/classworlds/1.1/classworlds-1.1.jar +2015-12-04 18:50:20,059 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.jar +2015-12-04 18:50:20,233 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.jar +2015-12-04 18:50:20,273 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.jar +2015-12-04 18:50:20,421 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.jar +2015-12-04 18:50:20,461 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.jar +2015-12-04 18:50:20,634 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.jar +2015-12-04 18:50:20,674 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.jar +2015-12-04 18:50:20,733 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.jar +2015-12-04 18:50:20,774 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.jar +2015-12-04 18:50:21,111 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.jar +2015-12-04 18:50:21,150 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.jar +2015-12-04 18:50:21,374 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.jar +2015-12-04 18:50:21,411 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar +2015-12-04 18:50:21,789 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar +2015-12-04 18:50:21,826 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-filtering/1.1/maven-filtering-1.1.jar +2015-12-04 18:50:21,931 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-filtering/1.1/maven-filtering-1.1.jar +2015-12-04 18:50:21,967 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.jar +2015-12-04 18:50:22,019 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.jar +2015-12-04 18:50:22,055 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.jar +2015-12-04 18:50:22,185 [Worker-12] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.jar +2015-12-04 18:50:31,690 [Worker-11] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 18:50:31,711 [Worker-11] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 18:50:31,725 [Worker-11] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 18:50:31,725 [Worker-11] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 18:50:31,736 [Worker-12] INFO o.e.m.j.i.AbstractJavaProjectConfigurator - Adding source folder /TheButtonAutoFlair/src +2015-12-04 18:50:31,737 [Worker-12] INFO o.e.m.j.i.AbstractJavaProjectConfigurator - Resources folder /TheButtonAutoFlair/src overlaps with sources folder /TheButtonAutoFlair/src +2015-12-04 18:50:31,746 [Worker-12] INFO o.e.m.j.i.AbstractJavaProjectConfigurator - Not adding source folder /TheButtonAutoFlair/src/test/java because it overlaps with /TheButtonAutoFlair/src +2015-12-04 18:50:31,908 [Worker-12] INFO o.e.m.c.i.p.ProjectConfigurationManager - Update started +2015-12-04 18:50:32,741 [Worker-12] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: TheButtonMCPlugin:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 18:50:34,085 [Worker-17] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 18:50:34,092 [Worker-17] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 18:50:34,108 [Worker-17] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 18:50:34,109 [Worker-17] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 18:50:34,139 [Worker-12] INFO o.e.m.j.i.AbstractJavaProjectConfigurator - Adding source folder /TheButtonAutoFlair/src +2015-12-04 18:50:34,140 [Worker-12] INFO o.e.m.j.i.AbstractJavaProjectConfigurator - Resources folder /TheButtonAutoFlair/src overlaps with sources folder /TheButtonAutoFlair/src +2015-12-04 18:50:34,145 [Worker-12] INFO o.e.m.j.i.AbstractJavaProjectConfigurator - Not adding source folder /TheButtonAutoFlair/src/test/java because it overlaps with /TheButtonAutoFlair/src +2015-12-04 18:50:34,265 [Worker-12] INFO o.e.m.c.i.p.ProjectConfigurationManager - Update completed: 2 sec +2015-12-04 18:50:35,484 [Worker-12] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 18:50:35,486 [Worker-12] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 18:50:35,489 [Worker-12] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 18:50:35,490 [Worker-12] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 18:53:17,340 [Worker-20] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 18:53:18,208 [Worker-20] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 18:53:18,211 [Worker-20] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 18:53:18,213 [Worker-20] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 18:53:18,214 [Worker-20] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 18:55:18,043 [Worker-18] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 18:55:18,058 [Worker-18] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available +2015-12-04 18:55:18,155 [Worker-21] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available +2015-12-04 18:55:18,180 [Worker-21] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available +2015-12-04 18:55:18,420 [Worker-18] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 18:55:18,423 [Worker-18] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 18:55:18,427 [Worker-18] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 18:55:18,428 [Worker-18] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 18:55:50,038 [Worker-19] ERROR o.e.m.c.u.i.actions.OpenPomAction - Could not resolve artifact org.spigotmc:spigot-api:pom:1.8.7-R0.1-SNAPSHOT +org.eclipse.core.runtime.CoreException: Could not resolve artifact org.spigotmc:spigot-api:pom:1.8.7-R0.1-SNAPSHOT + at org.eclipse.m2e.core.internal.embedder.MavenImpl$5.call(MavenImpl.java:776) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenImpl$5.call(MavenImpl.java:1) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenImpl.resolve(MavenImpl.java:743) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenImpl.resolve(MavenImpl.java:720) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.ui.internal.actions.OpenPomAction.openPomEditor(OpenPomAction.java:243) [org.eclipse.m2e.core.ui_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.ui.internal.actions.OpenPomAction.openEditor(OpenPomAction.java:218) [org.eclipse.m2e.core.ui_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.ui.internal.actions.OpenPomAction$1.run(OpenPomAction.java:129) [org.eclipse.m2e.core.ui_1.6.2.20150902-0002.jar:na] + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) [org.eclipse.core.jobs_3.6.1.v20141014-1248.jar:na] +2015-12-04 18:56:44,643 [main] ERROR o.e.m.c.u.i.actions.OpenPomAction - Could not resolve artifact org.spigotmc:spigot-api:pom:1.8.7-R0.1-SNAPSHOT +org.eclipse.core.runtime.CoreException: Could not resolve artifact org.spigotmc:spigot-api:pom:1.8.7-R0.1-SNAPSHOT + at org.eclipse.m2e.core.internal.embedder.MavenImpl$5.call(MavenImpl.java:776) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenImpl$5.call(MavenImpl.java:1) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenImpl.resolve(MavenImpl.java:743) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenImpl.resolve(MavenImpl.java:720) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.ui.internal.actions.OpenPomAction.openPomEditor(OpenPomAction.java:243) [org.eclipse.m2e.core.ui_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.ui.internal.actions.OpenPomAction.openEditor(OpenPomAction.java:218) [org.eclipse.m2e.core.ui_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.editor.pom.DependencyTreePage$3.open(DependencyTreePage.java:315) [org.eclipse.m2e.editor_1.6.2.20150902-0002.jar:na] + at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:853) [org.eclipse.jface_3.10.2.v20141021-1035.jar:na] + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) [org.eclipse.equinox.common_3.6.200.v20130402-1505.jar:na] + at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:50) [org.eclipse.ui.workbench_3.106.2.v20150204-1030.jar:na] + at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:178) [org.eclipse.jface_3.10.2.v20141021-1035.jar:na] + at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:850) [org.eclipse.jface_3.10.2.v20141021-1035.jar:na] + at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1142) [org.eclipse.jface_3.10.2.v20141021-1035.jar:na] + at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1249) [org.eclipse.jface_3.10.2.v20141021-1035.jar:na] + at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:278) [org.eclipse.jface_3.10.2.v20141021-1035.jar:na] + at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:272) [org.eclipse.jface_3.10.2.v20141021-1035.jar:na] + at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:313) [org.eclipse.jface_3.10.2.v20141021-1035.jar:na] + at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) [org.eclipse.swt.win32.win32.x86_64_3.103.2.v20150203-1351.jar:na] + at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4353) [org.eclipse.swt.win32.win32.x86_64_3.103.2.v20150203-1351.jar:na] + at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061) [org.eclipse.swt.win32.win32.x86_64_3.103.2.v20150203-1351.jar:na] + at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4172) [org.eclipse.swt.win32.win32.x86_64_3.103.2.v20150203-1351.jar:na] + at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3761) [org.eclipse.swt.win32.win32.x86_64_3.103.2.v20150203-1351.jar:na] + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151) [org.eclipse.e4.ui.workbench.swt_0.12.100.v20141126-1150.jar:na] + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) [org.eclipse.core.databinding.observable_1.4.1.v20140210-1835.jar:na] + at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032) [org.eclipse.e4.ui.workbench.swt_0.12.100.v20141126-1150.jar:na] + at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148) [org.eclipse.e4.ui.workbench_1.2.2.v20141212-1259.jar:na] + at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636) [org.eclipse.ui.workbench_3.106.2.v20150204-1030.jar:na] + at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) [org.eclipse.core.databinding.observable_1.4.1.v20140210-1835.jar:na] + at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579) [org.eclipse.ui.workbench_3.106.2.v20150204-1030.jar:na] + at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) [org.eclipse.ui.workbench_3.106.2.v20150204-1030.jar:na] + at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135) [org.eclipse.ui.ide.application_1.0.501.v20141111-1238.jar:na] + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) [org.eclipse.equinox.app_1.3.200.v20130910-1609.jar:na] + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) [org.eclipse.osgi_3.10.2.v20150203-1939.jar:na] + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) [org.eclipse.osgi_3.10.2.v20150203-1939.jar:na] + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380) [org.eclipse.osgi_3.10.2.v20150203-1939.jar:na] + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235) [org.eclipse.osgi_3.10.2.v20150203-1939.jar:na] + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_66] + at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_66] + at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_66] + at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_66] + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648) [org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar:na] + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603) [org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar:na] + at org.eclipse.equinox.launcher.Main.run(Main.java:1465) [org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar:na] +2015-12-04 18:58:45,620 [Worker-15] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 18:58:45,626 [Worker-15] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available +2015-12-04 18:58:45,714 [Worker-23] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available +2015-12-04 18:58:45,732 [Worker-23] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available +2015-12-04 18:58:45,963 [Worker-15] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 18:58:45,967 [Worker-15] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 18:58:45,978 [Worker-15] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 18:58:45,979 [Worker-15] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 18:58:48,301 [Worker-23] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 18:58:48,307 [Worker-23] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available +2015-12-04 18:58:48,416 [Worker-24] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available +2015-12-04 18:58:48,436 [Worker-24] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for org.spigotmc:spigot-api:jar:1.8.7-R0.1-SNAPSHOT is missing, no dependency information available +2015-12-04 18:58:48,686 [Worker-23] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 18:58:48,688 [Worker-23] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 18:58:48,690 [Worker-23] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 18:58:48,691 [Worker-23] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:00:27,258 [Worker-19] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:00:27,262 [Worker-19] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 19:00:27,276 [Worker-19] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:00:27,277 [Worker-19] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:03:13,115 [Worker-23] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 19:03:13,573 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/spigotmc/spigot-api/1.8.8-R0.1-SNAPSHOT/maven-metadata.xml +2015-12-04 19:03:13,696 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/spigotmc/spigot-api/1.8.8-R0.1-SNAPSHOT/spigot-api-1.8.8-R0.1-20151123.012015-28.pom +2015-12-04 19:03:13,766 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/sonatype/oss/oss-parent/9/oss-parent-9.pom +2015-12-04 19:03:14,053 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom +2015-12-04 19:03:14,118 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom +2015-12-04 19:03:14,430 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/commons-lang/commons-lang/2.6/commons-lang-2.6.pom +2015-12-04 19:03:14,468 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.pom +2015-12-04 19:03:14,548 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.pom +2015-12-04 19:03:14,754 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/apache/commons/commons-parent/17/commons-parent-17.pom +2015-12-04 19:03:14,817 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/17/commons-parent-17.pom +2015-12-04 19:03:14,889 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/17/commons-parent-17.pom +2015-12-04 19:03:15,109 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/apache/apache/7/apache-7.pom +2015-12-04 19:03:15,170 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/apache/7/apache-7.pom +2015-12-04 19:03:15,212 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/apache/7/apache-7.pom +2015-12-04 19:03:15,369 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.pom +2015-12-04 19:03:15,415 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.pom +2015-12-04 19:03:15,456 [Worker-23] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.pom +2015-12-04 19:03:15,660 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/junit/junit/4.10/junit-4.10.pom +2015-12-04 19:03:15,703 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/junit/junit/4.10/junit-4.10.pom +2015-12-04 19:03:15,748 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/junit/junit/4.10/junit-4.10.pom +2015-12-04 19:03:15,964 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.pom +2015-12-04 19:03:16,005 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.pom +2015-12-04 19:03:16,048 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.pom +2015-12-04 19:03:16,245 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1.pom +2015-12-04 19:03:16,330 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1.pom +2015-12-04 19:03:16,374 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1.pom +2015-12-04 19:03:16,591 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/com/google/guava/guava/17.0/guava-17.0.pom +2015-12-04 19:03:16,640 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/com/google/guava/guava/17.0/guava-17.0.pom +2015-12-04 19:03:16,685 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/com/google/guava/guava/17.0/guava-17.0.pom +2015-12-04 19:03:16,902 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/com/google/guava/guava-parent/17.0/guava-parent-17.0.pom +2015-12-04 19:03:16,954 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/17.0/guava-parent-17.0.pom +2015-12-04 19:03:16,997 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/17.0/guava-parent-17.0.pom +2015-12-04 19:03:17,197 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/sonatype/oss/oss-parent/7/oss-parent-7.pom +2015-12-04 19:03:17,243 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom +2015-12-04 19:03:17,300 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom +2015-12-04 19:03:17,534 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/com/google/code/gson/gson/2.2.4/gson-2.2.4.pom +2015-12-04 19:03:17,606 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.2.4/gson-2.2.4.pom +2015-12-04 19:03:17,648 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.2.4/gson-2.2.4.pom +2015-12-04 19:03:17,962 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/avaje/ebean/2.8.1/ebean-2.8.1.pom +2015-12-04 19:03:18,057 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/avaje/ebean/2.8.1/ebean-2.8.1.pom +2015-12-04 19:03:18,098 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/avaje/ebean/2.8.1/ebean-2.8.1.pom +2015-12-04 19:03:18,307 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/sonatype/oss/oss-parent/5/oss-parent-5.pom +2015-12-04 19:03:18,353 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom +2015-12-04 19:03:18,483 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/5/oss-parent-5.pom +2015-12-04 19:03:19,368 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/javax/persistence/persistence-api/1.0/persistence-api-1.0.pom +2015-12-04 19:03:19,659 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/javax/persistence/persistence-api/1.0/persistence-api-1.0.pom +2015-12-04 19:03:19,832 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/javax/persistence/persistence-api/1.0/persistence-api-1.0.pom +2015-12-04 19:03:20,832 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/yaml/snakeyaml/1.15/snakeyaml-1.15.pom +2015-12-04 19:03:21,405 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/yaml/snakeyaml/1.15/snakeyaml-1.15.pom +2015-12-04 19:03:21,756 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/yaml/snakeyaml/1.15/snakeyaml-1.15.pom +2015-12-04 19:03:22,275 [DefaultMetadataResolver-0-0] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/net/md-5/bungeecord-chat/1.8-SNAPSHOT/maven-metadata.xml +2015-12-04 19:03:23,212 [DefaultMetadataResolver-0-1] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://oss.sonatype.org/content/repositories/snapshots/net/md-5/bungeecord-chat/1.8-SNAPSHOT/maven-metadata.xml +2015-12-04 19:03:23,350 [DefaultMetadataResolver-0-1] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://oss.sonatype.org/content/repositories/snapshots/net/md-5/bungeecord-chat/1.8-SNAPSHOT/maven-metadata.xml +2015-12-04 19:03:23,570 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/net/md-5/bungeecord-chat/1.8-SNAPSHOT/bungeecord-chat-1.8-20151118.214305-100.pom +2015-12-04 19:03:23,707 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://oss.sonatype.org/content/repositories/snapshots/net/md-5/bungeecord-chat/1.8-SNAPSHOT/bungeecord-chat-1.8-20151118.214305-100.pom +2015-12-04 19:03:23,844 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://oss.sonatype.org/content/repositories/snapshots/net/md-5/bungeecord-chat/1.8-SNAPSHOT/bungeecord-chat-1.8-20151118.214305-100.pom +2015-12-04 19:03:24,011 [DefaultMetadataResolver-1-1] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://oss.sonatype.org/content/repositories/snapshots/net/md-5/bungeecord-parent/1.8-SNAPSHOT/maven-metadata.xml +2015-12-04 19:03:24,070 [DefaultMetadataResolver-1-0] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/net/md-5/bungeecord-parent/1.8-SNAPSHOT/maven-metadata.xml +2015-12-04 19:03:24,147 [DefaultMetadataResolver-1-1] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://oss.sonatype.org/content/repositories/snapshots/net/md-5/bungeecord-parent/1.8-SNAPSHOT/maven-metadata.xml +2015-12-04 19:03:24,292 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://oss.sonatype.org/content/repositories/snapshots/net/md-5/bungeecord-parent/1.8-SNAPSHOT/bungeecord-parent-1.8-20151118.214252-100.pom +2015-12-04 19:03:24,430 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://oss.sonatype.org/content/repositories/snapshots/net/md-5/bungeecord-parent/1.8-SNAPSHOT/bungeecord-parent-1.8-20151118.214252-100.pom +2015-12-04 19:03:24,638 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/com/google/code/gson/gson/2.3.1/gson-2.3.1.pom +2015-12-04 19:03:24,686 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.3.1/gson-2.3.1.pom +2015-12-04 19:03:24,744 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.3.1/gson-2.3.1.pom +2015-12-04 19:03:24,954 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/com/google/guava/guava/18.0/guava-18.0.pom +2015-12-04 19:03:25,018 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/com/google/guava/guava/18.0/guava-18.0.pom +2015-12-04 19:03:25,066 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/com/google/guava/guava/18.0/guava-18.0.pom +2015-12-04 19:03:25,259 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/com/google/guava/guava-parent/18.0/guava-parent-18.0.pom +2015-12-04 19:03:25,311 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/18.0/guava-parent-18.0.pom +2015-12-04 19:03:25,375 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/18.0/guava-parent-18.0.pom +2015-12-04 19:03:25,543 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/spigotmc/spigot-api/1.8.8-R0.1-SNAPSHOT/spigot-api-1.8.8-R0.1-20151123.012015-28.jar +2015-12-04 19:03:26,915 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/spigotmc/spigot-api/1.8.8-R0.1-SNAPSHOT/spigot-api-1.8.8-R0.1-20151123.012015-28.jar +2015-12-04 19:03:26,986 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/commons-lang/commons-lang/2.6/commons-lang-2.6.jar +2015-12-04 19:03:27,187 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar +2015-12-04 19:03:27,393 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/junit/junit/4.10/junit-4.10.jar +2015-12-04 19:03:27,600 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar +2015-12-04 19:03:27,810 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/com/google/guava/guava/17.0/guava-17.0.jar +2015-12-04 19:03:28,010 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar +2015-12-04 19:03:28,210 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/avaje/ebean/2.8.1/ebean-2.8.1.jar +2015-12-04 19:03:28,417 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar +2015-12-04 19:03:28,633 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/yaml/snakeyaml/1.15/snakeyaml-1.15.jar +2015-12-04 19:03:28,963 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar +2015-12-04 19:03:29,442 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/commons-lang/commons-lang/2.6/commons-lang-2.6.jar +2015-12-04 19:03:29,504 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar +2015-12-04 19:03:29,556 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar +2015-12-04 19:03:29,619 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/junit/junit/4.10/junit-4.10.jar +2015-12-04 19:03:30,020 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/junit/junit/4.10/junit-4.10.jar +2015-12-04 19:03:30,055 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar +2015-12-04 19:03:30,214 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar +2015-12-04 19:03:30,251 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/com/google/guava/guava/17.0/guava-17.0.jar +2015-12-04 19:03:33,692 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/com/google/guava/guava/17.0/guava-17.0.jar +2015-12-04 19:03:33,731 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar +2015-12-04 19:03:34,061 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar +2015-12-04 19:03:34,136 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/avaje/ebean/2.8.1/ebean-2.8.1.jar +2015-12-04 19:03:36,980 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/avaje/ebean/2.8.1/ebean-2.8.1.jar +2015-12-04 19:03:37,020 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar +2015-12-04 19:03:37,161 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar +2015-12-04 19:03:37,197 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/yaml/snakeyaml/1.15/snakeyaml-1.15.jar +2015-12-04 19:03:37,641 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/yaml/snakeyaml/1.15/snakeyaml-1.15.jar +2015-12-04 19:03:42,689 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://oss.sonatype.org/content/repositories/snapshots/net/md-5/bungeecord-chat/1.8-SNAPSHOT/bungeecord-chat-1.8-20151118.214305-100.jar +2015-12-04 19:03:43,085 [Worker-18] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://oss.sonatype.org/content/repositories/snapshots/net/md-5/bungeecord-chat/1.8-SNAPSHOT/bungeecord-chat-1.8-20151118.214305-100.jar +2015-12-04 19:03:44,132 [Worker-23] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:03:44,135 [Worker-23] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 19:03:44,137 [Worker-23] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:03:44,138 [Worker-23] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:03:45,513 [Worker-18] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:03:45,516 [Worker-18] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 19:03:45,528 [Worker-18] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:03:45,528 [Worker-18] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:11:24,386 [Worker-27] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 19:11:24,982 [Worker-27] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:11:24,985 [Worker-27] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 19:11:24,989 [Worker-27] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:11:24,990 [Worker-27] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:12:07,062 [Worker-29] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 19:12:07,675 [Worker-29] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:12:07,678 [Worker-29] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 19:12:07,681 [Worker-29] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:12:07,682 [Worker-29] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:12:22,540 [Worker-35] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 19:12:23,125 [Worker-35] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:12:23,127 [Worker-35] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 19:12:23,130 [Worker-35] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:12:23,131 [Worker-35] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:12:24,459 [Worker-35] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:12:24,462 [Worker-35] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 19:12:24,472 [Worker-35] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:12:24,473 [Worker-35] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:13:43,163 [Worker-35] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:13:43,166 [Worker-35] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 19:13:43,170 [Worker-35] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:13:43,171 [Worker-35] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:16:41,211 [Worker-5] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:16:41,235 [Worker-5] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 19:16:41,248 [Worker-5] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:16:41,254 [Worker-5] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:20:13,388 [ModalContext] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 19:20:14,438 [ModalContext] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:20:14,442 [ModalContext] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 19:20:14,449 [ModalContext] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:20:14,450 [ModalContext] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:20:46,218 [Worker-6] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 19:20:46,589 [Worker-0] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/htmlcleaner/htmlcleaner/2.16/htmlcleaner-2.16.pom +2015-12-04 19:20:47,058 [Worker-0] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/htmlcleaner/htmlcleaner/2.16/htmlcleaner-2.16.pom +2015-12-04 19:20:47,062 [Worker-0] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for htmlcleaner:htmlcleaner:jar:2.16 is missing, no dependency information available +2015-12-04 19:20:47,068 [Worker-6] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for htmlcleaner:htmlcleaner:jar:2.16 is missing, no dependency information available +2015-12-04 19:20:47,304 [Worker-0] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/htmlcleaner/htmlcleaner/2.16/htmlcleaner-2.16.jar +2015-12-04 19:20:47,632 [Worker-0] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/htmlcleaner/htmlcleaner/2.16/htmlcleaner-2.16.jar +2015-12-04 19:20:48,105 [Worker-6] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:20:48,108 [Worker-6] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 19:20:48,111 [Worker-6] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:20:48,114 [Worker-6] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:21:11,999 [Worker-7] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for htmlcleaner:htmlcleaner:jar:2.16 is missing, no dependency information available +2015-12-04 19:21:12,775 [Worker-4] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 19:21:12,920 [Worker-4] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for htmlcleaner:htmlcleaner:jar:2.16 is missing, no dependency information available +2015-12-04 19:21:13,435 [Worker-4] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:21:13,438 [Worker-4] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 19:21:13,441 [Worker-4] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:21:13,442 [Worker-4] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:21:14,633 [Worker-4] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for htmlcleaner:htmlcleaner:jar:2.16 is missing, no dependency information available +2015-12-04 19:21:14,669 [Worker-4] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:21:14,670 [Worker-4] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 19:21:14,672 [Worker-4] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:21:14,673 [Worker-4] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:21:22,585 [Worker-0] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 19:21:22,705 [Worker-0] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for htmlcleaner:htmlcleaner:jar:2.16 is missing, no dependency information available +2015-12-04 19:21:23,139 [Worker-0] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:21:23,142 [Worker-0] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 19:21:23,144 [Worker-0] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:21:23,145 [Worker-0] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:21:41,707 [Worker-3] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 19:21:42,311 [Worker-3] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:21:42,344 [Worker-3] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 19:21:42,347 [Worker-3] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:21:42,348 [Worker-3] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:21:44,316 [Worker-3] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:21:44,328 [Worker-3] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 19:21:44,340 [Worker-3] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:21:44,341 [Worker-3] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:22:10,338 [Worker-7] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:22:10,340 [Worker-7] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 19:22:10,344 [Worker-7] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:22:10,345 [Worker-7] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:23:12,761 [Worker-7] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:23:12,762 [Worker-7] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 19:23:12,764 [Worker-7] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:23:12,764 [Worker-7] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:23:38,735 [Worker-8] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:23:38,739 [Worker-8] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 19:23:38,758 [Worker-8] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:23:38,761 [Worker-8] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 19:25:24,731 [Worker-8] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:25:24,734 [Worker-8] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 19:25:24,740 [Worker-8] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 19:25:24,741 [Worker-8] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:16:56,565 [Worker-20] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:16:56,571 [Worker-20] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 20:16:56,575 [Worker-20] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:16:56,576 [Worker-20] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:17:04,872 [Worker-20] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:17:04,875 [Worker-20] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 20:17:04,882 [Worker-20] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:17:04,883 [Worker-20] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:17:37,162 [Worker-18] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:17:37,166 [Worker-18] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 20:17:37,168 [Worker-18] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:17:37,170 [Worker-18] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:17:59,143 [Worker-24] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:17:59,146 [Worker-24] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 20:17:59,147 [Worker-24] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:17:59,148 [Worker-24] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:18:11,749 [Worker-23] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:18:11,764 [Worker-23] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 20:18:11,767 [Worker-23] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:18:11,768 [Worker-23] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:22:50,840 [Worker-25] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:22:50,843 [Worker-25] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 20:22:50,847 [Worker-25] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:22:50,848 [Worker-25] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:30:39,150 [Worker-27] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:30:39,151 [Worker-27] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 20:30:39,152 [Worker-27] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:30:39,154 [Worker-27] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:31:33,707 [Worker-29] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:31:33,710 [Worker-29] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 20:31:33,718 [Worker-29] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:31:33,719 [Worker-29] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:31:53,794 [Worker-29] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:31:53,795 [Worker-29] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 20:31:53,797 [Worker-29] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:31:53,798 [Worker-29] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:32:34,244 [Worker-29] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:32:34,245 [Worker-29] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 20:32:34,246 [Worker-29] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:32:34,247 [Worker-29] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:36:08,746 [Worker-30] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:36:08,747 [Worker-30] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 20:36:08,749 [Worker-30] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:36:08,749 [Worker-30] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:48:41,820 [ModalContext] ERROR o.e.m.c.i.p.r.ProjectRegistryManager - Could not read pom.xml +org.eclipse.core.runtime.CoreException: Could not read pom.xml + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:565) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:574) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refreshPhase2(ProjectRegistryManager.java:541) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:497) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:350) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:297) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.getProjectFacade(MavenBuilder.java:154) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod$1.call(MavenBuilder.java:89) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:86) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:200) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) [org.eclipse.equinox.common_3.6.200.v20130402-1505.jar:na] + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:299) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) [org.eclipse.equinox.common_3.6.200.v20130402-1505.jar:na] + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:302) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:263) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:401) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.internal.resources.Project$1.run(Project.java:618) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.internal.resources.Project.build(Project.java:114) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.jdt.internal.ui.jarpackager.JarFileExportOperation.buildProjects(JarFileExportOperation.java:1159) [org.eclipse.jdt.ui_3.10.2.v20141014-1419.jar:na] + at org.eclipse.jdt.internal.ui.jarpackager.JarFileExportOperation.singleRun(JarFileExportOperation.java:1006) [org.eclipse.jdt.ui_3.10.2.v20141014-1419.jar:na] + at org.eclipse.jdt.internal.ui.jarpackager.JarFileExportOperation.execute(JarFileExportOperation.java:987) [org.eclipse.jdt.ui_3.10.2.v20141014-1419.jar:na] + at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run(WorkspaceModifyOperation.java:106) [org.eclipse.ui.ide_3.10.2.v20141118-1227.jar:na] + at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:118) [org.eclipse.ui.ide_3.10.2.v20141118-1227.jar:na] + at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122) [org.eclipse.jface_3.10.2.v20141021-1035.jar:na] +Caused by: org.apache.maven.model.io.ModelParseException: Duplicated tag: 'build' (position: START_TAG seen ...\r\n ... @44:10) + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:130) ~[maven-model-builder-3.3.3.jar:3.3.3] + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:94) ~[maven-model-builder-3.3.3.jar:3.3.3] + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:563) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + ... 32 common frames omitted +Caused by: org.codehaus.plexus.util.xml.pull.XmlPullParserException: Duplicated tag: 'build' (position: START_TAG seen ...\r\n ... @44:10) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.checkFieldWithDuplicate(MavenXpp3Reader.java:114) ~[maven-model-3.3.3.jar:3.3.3] + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.parseModel(MavenXpp3Reader.java:2237) ~[maven-model-3.3.3.jar:3.3.3] + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.read(MavenXpp3Reader.java:3807) ~[maven-model-3.3.3.jar:3.3.3] + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.read(MavenXpp3Reader.java:557) ~[maven-model-3.3.3.jar:3.3.3] + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:125) ~[maven-model-builder-3.3.3.jar:3.3.3] + ... 34 common frames omitted +2015-12-04 20:48:43,903 [Worker-41] ERROR o.e.m.c.i.p.r.ProjectRegistryManager - Could not read pom.xml +org.eclipse.core.runtime.CoreException: Could not read pom.xml + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:565) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:574) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refreshPhase2(ProjectRegistryManager.java:541) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:497) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:350) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:297) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.getProjectFacade(MavenBuilder.java:154) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod$1.call(MavenBuilder.java:89) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:86) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:200) [org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) [org.eclipse.equinox.common_3.6.200.v20130402-1505.jar:na] + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:299) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) [org.eclipse.equinox.common_3.6.200.v20130402-1505.jar:na] + at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:302) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:358) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:381) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241) [org.eclipse.core.resources_3.9.1.v20140825-1431.jar:na] + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) [org.eclipse.core.jobs_3.6.1.v20141014-1248.jar:na] +Caused by: org.apache.maven.model.io.ModelParseException: Duplicated tag: 'build' (position: START_TAG seen ...\r\n ... @44:10) + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:130) ~[maven-model-builder-3.3.3.jar:3.3.3] + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:94) ~[maven-model-builder-3.3.3.jar:3.3.3] + at org.eclipse.m2e.core.internal.embedder.MavenImpl.readModel(MavenImpl.java:563) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + ... 24 common frames omitted +Caused by: org.codehaus.plexus.util.xml.pull.XmlPullParserException: Duplicated tag: 'build' (position: START_TAG seen ...\r\n ... @44:10) + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.checkFieldWithDuplicate(MavenXpp3Reader.java:114) ~[maven-model-3.3.3.jar:3.3.3] + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.parseModel(MavenXpp3Reader.java:2237) ~[maven-model-3.3.3.jar:3.3.3] + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.read(MavenXpp3Reader.java:3807) ~[maven-model-3.3.3.jar:3.3.3] + at org.apache.maven.model.io.xpp3.MavenXpp3Reader.read(MavenXpp3Reader.java:557) ~[maven-model-3.3.3.jar:3.3.3] + at org.apache.maven.model.io.DefaultModelReader.read(DefaultModelReader.java:125) ~[maven-model-builder-3.3.3.jar:3.3.3] + ... 26 common frames omitted +2015-12-04 20:49:22,907 [Worker-40] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloading https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-shade-plugin/2.4.2/maven-shade-plugin-2.4.2.jar +2015-12-04 20:49:23,623 [Worker-40] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-shade-plugin/2.4.2/maven-shade-plugin-2.4.2.jar +2015-12-04 20:49:24,806 [Worker-40] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 20:49:25,634 [Worker-40] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:49:25,637 [Worker-40] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 20:49:25,638 [Worker-40] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:49:25,639 [Worker-40] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:49:28,667 [Worker-37] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:49:28,672 [Worker-37] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 20:49:28,683 [Worker-37] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:49:28,684 [Worker-37] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:51:21,311 [Worker-41] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 20:51:21,843 [Worker-41] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:51:21,846 [Worker-41] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 20:51:21,850 [Worker-41] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:51:21,851 [Worker-41] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:56:08,783 [Worker-46] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:56:08,785 [Worker-46] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 20:56:08,787 [Worker-46] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:56:08,788 [Worker-46] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:56:31,718 [Worker-45] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:56:31,720 [Worker-45] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 20:56:31,721 [Worker-45] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:56:31,722 [Worker-45] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:57:18,365 [Worker-45] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:57:18,366 [Worker-45] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 20:57:18,368 [Worker-45] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:57:18,369 [Worker-45] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:57:21,175 [Worker-46] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:57:21,176 [Worker-46] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 20:57:21,178 [Worker-46] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:57:21,179 [Worker-46] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 20:59:55,337 [Worker-45] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:59:55,340 [Worker-45] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 20:59:55,353 [Worker-45] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 20:59:55,354 [Worker-45] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:04:46,552 [Worker-46] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:04:46,555 [Worker-46] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:04:46,557 [Worker-46] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:04:46,558 [Worker-46] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:07:43,286 [Worker-52] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:07:43,293 [Worker-52] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:07:43,296 [Worker-52] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:07:43,311 [Worker-52] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:07:57,407 [Worker-44] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:07:57,410 [Worker-44] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:07:57,411 [Worker-44] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:07:57,412 [Worker-44] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:10:39,898 [Worker-50] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:10:39,901 [Worker-50] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:10:39,903 [Worker-50] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:10:39,904 [Worker-50] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:15:40,994 [Worker-53] INFO o.e.m.c.i.p.ProjectConfigurationManager - Update started +2015-12-04 21:15:41,751 [Worker-53] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 21:15:42,947 [Worker-53] INFO o.e.m.j.i.AbstractJavaProjectConfigurator - Adding source folder /TheButtonAutoFlair/src +2015-12-04 21:15:42,948 [Worker-53] INFO o.e.m.j.i.AbstractJavaProjectConfigurator - Resources folder /TheButtonAutoFlair/src overlaps with sources folder /TheButtonAutoFlair/src +2015-12-04 21:15:42,949 [Worker-53] INFO o.e.m.j.i.AbstractJavaProjectConfigurator - Not adding source folder /TheButtonAutoFlair/src/test/java because it overlaps with /TheButtonAutoFlair/src +2015-12-04 21:15:43,337 [Worker-53] INFO o.e.m.c.i.p.ProjectConfigurationManager - Update completed: 2 sec +2015-12-04 21:15:43,800 [Worker-46] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:15:43,804 [Worker-46] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:15:43,818 [Worker-46] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:15:43,819 [Worker-46] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:16:32,381 [Worker-44] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:16:32,385 [Worker-44] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:16:32,389 [Worker-44] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:16:32,390 [Worker-44] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:16:42,779 [Worker-55] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:16:42,782 [Worker-55] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:16:42,786 [Worker-55] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:16:42,787 [Worker-55] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:20:39,443 [Worker-56] ERROR o.e.m.c.u.i.actions.OpenPomAction - Could not resolve artifact htmlcleaner:htmlcleaner:pom:2.16 +org.eclipse.core.runtime.CoreException: Could not resolve artifact htmlcleaner:htmlcleaner:pom:2.16 + at org.eclipse.m2e.core.internal.embedder.MavenImpl$5.call(MavenImpl.java:776) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenImpl$5.call(MavenImpl.java:1) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:176) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenImpl.resolve(MavenImpl.java:743) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.internal.embedder.MavenImpl.resolve(MavenImpl.java:720) ~[org.eclipse.m2e.core_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.ui.internal.actions.OpenPomAction.openPomEditor(OpenPomAction.java:243) [org.eclipse.m2e.core.ui_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.core.ui.internal.actions.OpenPomAction.openEditor(OpenPomAction.java:218) [org.eclipse.m2e.core.ui_1.6.2.20150902-0002.jar:na] + at org.eclipse.m2e.editor.xml.PomHyperlinkDetector$6$1.run(PomHyperlinkDetector.java:616) [org.eclipse.m2e.editor.xml_1.6.2.20150902-0002.jar:na] + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) [org.eclipse.core.jobs_3.6.1.v20141014-1248.jar:na] +2015-12-04 21:20:49,116 [Worker-59] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 21:20:50,009 [Worker-59] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:20:50,011 [Worker-59] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 21:20:50,023 [Worker-59] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:20:50,025 [Worker-59] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:22:06,104 [Worker-60] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 21:22:06,752 [Worker-60] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:22:06,754 [Worker-60] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 21:22:06,759 [Worker-60] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:22:06,760 [Worker-60] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:22:08,169 [Worker-60] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:22:08,171 [Worker-60] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:22:08,183 [Worker-60] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:22:08,184 [Worker-60] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:22:50,057 [Worker-61] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 21:22:50,717 [Worker-61] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:22:50,726 [Worker-61] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 21:22:50,737 [Worker-61] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:22:50,738 [Worker-61] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:39:07,967 [ModalContext] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 21:39:08,915 [ModalContext] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:39:08,918 [ModalContext] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 21:39:08,929 [ModalContext] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:39:08,930 [ModalContext] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:40:22,018 [Worker-76] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 21:40:23,453 [Worker-76] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:40:23,456 [Worker-76] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 21:40:23,493 [Worker-76] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:40:23,494 [Worker-76] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:40:43,147 [Worker-78] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 21:40:43,742 [Worker-78] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:40:43,745 [Worker-78] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 21:40:43,749 [Worker-78] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:40:43,750 [Worker-78] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:40:45,578 [Worker-79] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 21:40:46,251 [Worker-79] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:40:46,255 [Worker-79] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 21:40:46,258 [Worker-79] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:40:46,259 [Worker-79] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:40:53,084 [Worker-74] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 21:40:53,689 [Worker-74] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:40:53,692 [Worker-74] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 21:40:53,725 [Worker-74] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:40:53,726 [Worker-74] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:40:55,167 [Worker-78] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:40:55,170 [Worker-78] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:40:55,181 [Worker-78] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:40:55,182 [Worker-78] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:41:19,932 [Worker-71] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 21:41:20,618 [Worker-77] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/spigotmc/spigot-api//spigot-api-.pom +2015-12-04 21:41:21,111 [Worker-77] INFO o.e.m.c.i.e.AbstractTransferListenerAdapter - Downloaded https://repo.maven.apache.org/maven2/org/spigotmc/spigot-api//spigot-api-.pom +2015-12-04 21:41:21,113 [Worker-77] WARN o.e.m.c.i.embedder.EclipseLogger - The POM for org.spigotmc:spigot-api:jar: is missing, no dependency information available +2015-12-04 21:42:23,965 [Worker-80] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 21:42:24,529 [Worker-80] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:42:24,532 [Worker-80] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 21:42:24,552 [Worker-80] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:42:24,553 [Worker-80] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:42:25,847 [Worker-64] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:42:25,850 [Worker-64] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:42:25,876 [Worker-64] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:42:25,876 [Worker-64] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:42:35,185 [Worker-80] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 21:42:35,820 [Worker-80] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:42:35,823 [Worker-80] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 21:42:35,826 [Worker-80] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:42:35,827 [Worker-80] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:49:41,401 [Worker-86] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:49:41,402 [Worker-86] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 21:49:41,403 [Worker-86] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:49:41,403 [Worker-86] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:50:38,947 [Worker-88] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:50:38,950 [Worker-88] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:50:38,960 [Worker-88] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:50:38,961 [Worker-88] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:50:43,654 [Worker-86] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:50:43,663 [Worker-86] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:50:43,665 [Worker-86] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:50:43,666 [Worker-86] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:50:46,877 [Worker-90] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:50:46,879 [Worker-90] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:50:46,881 [Worker-90] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:50:46,881 [Worker-90] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:50:50,823 [Worker-87] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:50:50,825 [Worker-87] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:50:50,827 [Worker-87] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:50:50,827 [Worker-87] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:51:44,506 [Worker-89] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:51:44,509 [Worker-89] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:51:44,511 [Worker-89] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:51:44,512 [Worker-89] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:52:47,266 [Worker-90] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:52:47,269 [Worker-90] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:52:47,272 [Worker-90] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:52:47,273 [Worker-90] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:53:23,536 [Worker-88] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:53:23,539 [Worker-88] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:53:23,541 [Worker-88] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:53:23,541 [Worker-88] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:53:38,590 [Worker-86] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:53:38,593 [Worker-86] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:53:38,594 [Worker-86] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:53:38,595 [Worker-86] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:53:41,614 [Worker-89] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:53:41,616 [Worker-89] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:53:41,618 [Worker-89] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:53:41,619 [Worker-89] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:53:49,777 [Worker-90] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:53:49,779 [Worker-90] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:53:49,781 [Worker-90] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:53:49,782 [Worker-90] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:54:12,527 [Worker-91] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:54:12,529 [Worker-91] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:54:12,531 [Worker-91] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:54:12,532 [Worker-91] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:56:30,836 [Worker-87] INFO o.e.m.c.i.l.LifecycleMappingFactory - Using org.eclipse.m2e.jdt.JarLifecycleMapping lifecycle mapping for MavenProject: tk.sznp:TheButtonMCPlugin:0.0.1-SNAPSHOT @ D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\pom.xml. +2015-12-04 21:56:31,779 [Worker-87] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:56:31,782 [Worker-87] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 21:56:31,785 [Worker-87] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:56:31,786 [Worker-87] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:56:52,402 [Worker-77] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:56:52,405 [Worker-77] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:56:52,417 [Worker-77] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:56:52,418 [Worker-77] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:57:14,441 [Worker-83] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:57:14,444 [Worker-83] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:57:14,447 [Worker-83] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:57:14,448 [Worker-83] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:57:48,226 [Worker-89] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:57:48,227 [Worker-89] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 21:57:48,228 [Worker-89] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:57:48,229 [Worker-89] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 21:58:10,193 [Worker-87] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:58:10,196 [Worker-87] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 21:58:10,197 [Worker-87] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 21:58:10,198 [Worker-87] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:07:16,564 [Worker-96] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:07:16,567 [Worker-96] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:07:16,569 [Worker-96] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:07:16,570 [Worker-96] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:09:55,751 [Worker-99] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:09:55,753 [Worker-99] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:09:55,755 [Worker-99] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:09:55,759 [Worker-99] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:10:20,010 [Worker-99] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:10:20,012 [Worker-99] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:10:20,014 [Worker-99] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:10:20,015 [Worker-99] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:10:21,128 [Worker-104] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:10:21,131 [Worker-104] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:10:21,132 [Worker-104] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:10:21,133 [Worker-104] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:12:56,290 [Worker-100] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:12:56,293 [Worker-100] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:12:56,294 [Worker-100] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:12:56,295 [Worker-100] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:13:18,020 [Worker-103] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:13:18,022 [Worker-103] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:13:18,024 [Worker-103] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:13:18,024 [Worker-103] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:13:22,655 [Worker-100] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:13:22,672 [Worker-100] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:13:22,674 [Worker-100] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:13:22,675 [Worker-100] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:13:28,001 [Worker-101] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:13:28,004 [Worker-101] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:13:28,007 [Worker-101] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:13:28,008 [Worker-101] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:13:31,668 [Worker-106] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:13:31,671 [Worker-106] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:13:31,672 [Worker-106] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:13:31,673 [Worker-106] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:13:33,225 [Worker-105] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:13:33,227 [Worker-105] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:13:33,228 [Worker-105] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:13:33,229 [Worker-105] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:13:35,749 [Worker-106] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:13:35,752 [Worker-106] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:13:35,754 [Worker-106] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:13:35,755 [Worker-106] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:14:22,266 [Worker-98] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:14:22,269 [Worker-98] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:14:22,270 [Worker-98] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:14:22,271 [Worker-98] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:15:21,225 [Worker-103] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:15:21,227 [Worker-103] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:15:21,228 [Worker-103] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:15:21,236 [Worker-103] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:17:52,207 [Worker-106] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:17:52,299 [Worker-106] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:17:52,301 [Worker-106] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:17:52,302 [Worker-106] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:18:09,588 [Worker-107] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:18:09,591 [Worker-107] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:18:09,593 [Worker-107] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:18:09,594 [Worker-107] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:18:25,430 [Worker-107] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:18:25,432 [Worker-107] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:18:25,435 [Worker-107] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:18:25,436 [Worker-107] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:18:34,047 [Worker-105] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:18:34,050 [Worker-105] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:18:34,051 [Worker-105] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:18:34,052 [Worker-105] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:21:03,941 [Worker-105] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:21:03,944 [Worker-105] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:21:03,945 [Worker-105] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:21:03,946 [Worker-105] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:21:13,394 [Worker-110] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:21:13,396 [Worker-110] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:21:13,397 [Worker-110] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:21:13,398 [Worker-110] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:21:17,520 [Worker-109] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:21:17,523 [Worker-109] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:21:17,524 [Worker-109] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:21:17,525 [Worker-109] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:21:24,535 [Worker-101] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:21:24,538 [Worker-101] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:21:24,539 [Worker-101] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:21:24,540 [Worker-101] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:21:32,731 [Worker-106] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:21:32,734 [Worker-106] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:21:32,736 [Worker-106] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:21:32,739 [Worker-106] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:21:46,908 [Worker-109] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:21:46,911 [Worker-109] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:21:46,912 [Worker-109] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:21:46,912 [Worker-109] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:21:53,525 [Worker-105] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:21:53,528 [Worker-105] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:21:53,530 [Worker-105] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:21:53,531 [Worker-105] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:22:05,040 [Worker-109] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:22:05,042 [Worker-109] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:22:05,043 [Worker-109] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:22:05,044 [Worker-109] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:22:13,589 [Worker-110] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:22:13,591 [Worker-110] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:22:13,592 [Worker-110] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:22:13,593 [Worker-110] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:23:47,614 [Worker-109] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:23:47,616 [Worker-109] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:23:47,618 [Worker-109] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:23:47,619 [Worker-109] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:23:52,172 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:23:52,175 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:23:52,176 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:23:52,177 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:24:31,567 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:24:31,569 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:24:31,571 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:24:31,572 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:26:08,955 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:26:08,957 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:26:08,959 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:26:08,960 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:39:23,493 [Worker-121] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:39:23,496 [Worker-121] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:39:23,498 [Worker-121] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:39:23,499 [Worker-121] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:39:29,700 [Worker-119] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:39:29,702 [Worker-119] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:39:29,704 [Worker-119] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:39:29,704 [Worker-119] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:43:10,025 [Worker-125] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:43:10,036 [Worker-125] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 22:43:10,038 [Worker-125] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:43:10,038 [Worker-125] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:45:28,086 [Worker-123] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:45:28,088 [Worker-123] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:45:28,090 [Worker-123] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:45:28,090 [Worker-123] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:45:34,057 [Worker-127] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:45:34,060 [Worker-127] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:45:34,061 [Worker-127] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:45:34,062 [Worker-127] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 22:45:35,151 [Worker-131] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:45:35,153 [Worker-131] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 22:45:35,155 [Worker-131] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 22:45:35,156 [Worker-131] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 23:05:36,242 [Worker-141] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:05:36,246 [Worker-141] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 23:05:36,247 [Worker-141] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:05:36,248 [Worker-141] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 23:20:47,063 [Worker-155] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:20:47,067 [Worker-155] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 23:20:47,068 [Worker-155] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:20:47,069 [Worker-155] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 23:30:12,744 [Worker-4] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:30:12,769 [Worker-4] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 23:30:12,776 [Worker-4] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:30:12,777 [Worker-4] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 23:30:40,379 [Worker-1] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:30:40,394 [Worker-1] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 23:30:40,398 [Worker-1] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:30:40,399 [Worker-1] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 23:43:18,903 [Worker-17] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:43:18,904 [Worker-17] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 0 resource +2015-12-04 23:43:18,906 [Worker-17] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:43:18,907 [Worker-17] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 23:45:57,784 [Worker-21] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:45:57,787 [Worker-21] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 23:45:57,789 [Worker-21] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:45:57,790 [Worker-21] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 23:47:06,633 [Worker-20] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:47:06,636 [Worker-20] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 23:47:06,638 [Worker-20] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:47:06,639 [Worker-20] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 23:47:43,260 [Worker-18] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:47:43,263 [Worker-18] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 23:47:43,265 [Worker-18] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:47:43,266 [Worker-18] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 23:47:56,932 [Worker-20] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:47:56,935 [Worker-20] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 23:47:56,937 [Worker-20] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:47:56,938 [Worker-20] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 23:48:07,311 [Worker-23] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:48:07,314 [Worker-23] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 23:48:07,317 [Worker-23] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:48:07,318 [Worker-23] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-04 23:48:10,333 [Worker-14] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:48:10,336 [Worker-14] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-04 23:48:10,338 [Worker-14] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-04 23:48:10,339 [Worker-14] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 15:09:58,538 [Worker-0] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:09:58,588 [Worker-0] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 15:09:58,618 [Worker-0] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:09:58,618 [Worker-0] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 15:10:00,039 [Worker-9] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:10:00,102 [Worker-9] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 15:10:00,112 [Worker-9] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:10:00,112 [Worker-9] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 15:10:15,382 [Worker-4] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:10:15,392 [Worker-4] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 15:10:15,392 [Worker-4] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:10:15,392 [Worker-4] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 15:10:16,604 [Worker-9] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:10:16,604 [Worker-9] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 15:10:16,604 [Worker-9] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:10:16,614 [Worker-9] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 15:10:25,851 [Worker-0] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:10:25,854 [Worker-0] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 15:10:25,856 [Worker-0] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:10:25,857 [Worker-0] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 15:20:44,813 [Worker-13] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:20:44,816 [Worker-13] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 15:20:44,819 [Worker-13] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:20:44,820 [Worker-13] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 15:21:13,697 [Worker-14] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:21:13,701 [Worker-14] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 15:21:13,707 [Worker-14] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:21:13,708 [Worker-14] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 15:21:20,333 [Worker-17] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:21:20,335 [Worker-17] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 15:21:20,339 [Worker-17] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:21:20,340 [Worker-17] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 15:21:21,821 [Worker-11] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:21:21,825 [Worker-11] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 15:21:21,827 [Worker-11] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:21:21,827 [Worker-11] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 15:21:29,611 [Worker-14] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:21:29,614 [Worker-14] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 15:21:29,616 [Worker-14] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:21:29,617 [Worker-14] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 15:21:33,694 [Worker-17] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:21:33,697 [Worker-17] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 15:21:33,700 [Worker-17] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:21:33,700 [Worker-17] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 15:21:37,798 [Worker-19] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:21:37,801 [Worker-19] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 15:21:37,804 [Worker-19] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:21:37,805 [Worker-19] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 15:25:35,368 [Worker-21] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:25:35,372 [Worker-21] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 15:25:35,375 [Worker-21] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:25:35,376 [Worker-21] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 15:25:47,343 [Worker-13] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:25:47,346 [Worker-13] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 15:25:47,347 [Worker-13] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:25:47,348 [Worker-13] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 15:26:02,269 [Worker-23] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:26:02,272 [Worker-23] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 15:26:02,274 [Worker-23] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 15:26:02,274 [Worker-23] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-05 22:47:47,859 [Worker-8] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 22:47:48,215 [Worker-8] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-05 22:47:48,355 [Worker-8] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-05 22:47:48,356 [Worker-8] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-09 20:43:25,193 [Worker-4] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-09 20:43:25,230 [Worker-4] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-09 20:43:25,257 [Worker-4] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-09 20:43:25,258 [Worker-4] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-09 20:43:27,557 [Worker-0] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-09 20:43:27,588 [Worker-0] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-09 20:43:27,593 [Worker-0] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-09 20:43:27,594 [Worker-0] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-09 20:43:29,066 [Worker-4] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-09 20:43:29,069 [Worker-4] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-09 20:43:29,072 [Worker-4] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-09 20:43:29,073 [Worker-4] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-18 22:47:51,420 [Worker-1] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 22:47:51,466 [Worker-1] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-18 22:47:51,501 [Worker-1] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 22:47:51,502 [Worker-1] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-18 23:15:29,649 [Worker-24] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:15:29,658 [Worker-24] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-18 23:15:29,661 [Worker-24] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:15:29,662 [Worker-24] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-18 23:16:46,383 [Worker-18] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:16:46,386 [Worker-18] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-18 23:16:46,388 [Worker-18] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:16:46,389 [Worker-18] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-18 23:18:04,390 [Worker-23] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:18:04,424 [Worker-23] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-18 23:18:04,429 [Worker-23] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:18:04,430 [Worker-23] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-18 23:39:23,141 [Worker-28] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:39:23,193 [Worker-28] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-18 23:39:23,196 [Worker-28] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:39:23,197 [Worker-28] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-18 23:39:31,231 [Worker-35] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:39:31,236 [Worker-35] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-18 23:39:31,238 [Worker-35] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:39:31,239 [Worker-35] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-18 23:39:45,705 [Worker-37] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:39:45,707 [Worker-37] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-18 23:39:45,710 [Worker-37] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:39:45,710 [Worker-37] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-18 23:40:20,360 [Worker-35] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:40:20,363 [Worker-35] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-18 23:40:20,364 [Worker-35] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:40:20,365 [Worker-35] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-18 23:40:21,499 [Worker-31] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:40:21,502 [Worker-31] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-18 23:40:21,503 [Worker-31] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:40:21,504 [Worker-31] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-18 23:42:09,153 [Worker-35] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:42:09,157 [Worker-35] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-18 23:42:09,159 [Worker-35] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:42:09,159 [Worker-35] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-18 23:42:15,454 [Worker-37] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:42:15,457 [Worker-37] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-18 23:42:15,458 [Worker-37] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:42:15,459 [Worker-37] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-18 23:42:17,056 [Worker-28] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:42:17,059 [Worker-28] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-18 23:42:17,062 [Worker-28] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:42:17,062 [Worker-28] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-18 23:42:34,856 [Worker-35] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:42:34,860 [Worker-35] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-18 23:42:34,862 [Worker-35] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:42:34,863 [Worker-35] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-18 23:42:37,056 [Worker-31] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:42:37,059 [Worker-31] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-18 23:42:37,060 [Worker-31] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-18 23:42:37,061 [Worker-31] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:13:44,560 [Worker-83] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:13:44,592 [Worker-83] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:13:44,592 [Worker-83] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:13:44,592 [Worker-83] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:13:49,490 [Worker-80] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:13:49,490 [Worker-80] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:13:49,506 [Worker-80] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:13:49,506 [Worker-80] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:15:22,930 [Worker-79] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:15:22,930 [Worker-79] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:15:22,930 [Worker-79] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:15:22,930 [Worker-79] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:15:26,446 [Worker-75] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:15:26,446 [Worker-75] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:15:26,462 [Worker-75] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:15:26,462 [Worker-75] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:15:50,762 [Worker-77] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:15:50,762 [Worker-77] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:15:50,778 [Worker-77] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:15:50,778 [Worker-77] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:16:29,381 [Worker-82] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:16:29,381 [Worker-82] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:16:29,381 [Worker-82] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:16:29,381 [Worker-82] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:17:40,556 [Worker-75] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:17:40,556 [Worker-75] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:17:40,556 [Worker-75] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:17:40,556 [Worker-75] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:18:18,610 [Worker-80] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:18:18,610 [Worker-80] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:18:18,610 [Worker-80] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:18:18,610 [Worker-80] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:18:20,172 [Worker-83] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:18:20,172 [Worker-83] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:18:20,172 [Worker-83] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:18:20,172 [Worker-83] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:18:30,770 [Worker-75] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:18:30,770 [Worker-75] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:18:30,770 [Worker-75] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:18:30,770 [Worker-75] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:19:45,890 [Worker-84] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:19:45,890 [Worker-84] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:19:45,890 [Worker-84] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:19:45,890 [Worker-84] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:20:58,882 [Worker-84] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:20:58,897 [Worker-84] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:20:58,897 [Worker-84] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:20:58,897 [Worker-84] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:31:13,566 [Worker-83] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:31:13,566 [Worker-83] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:31:13,566 [Worker-83] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:31:13,566 [Worker-83] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:33:35,254 [Worker-86] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:33:35,254 [Worker-86] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:33:35,254 [Worker-86] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:33:35,254 [Worker-86] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:34:07,890 [Worker-82] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:34:07,890 [Worker-82] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:34:07,890 [Worker-82] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:34:07,890 [Worker-82] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:34:35,365 [Worker-82] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:34:35,365 [Worker-82] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:34:35,365 [Worker-82] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:34:35,365 [Worker-82] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:34:39,826 [Worker-86] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:34:39,826 [Worker-86] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:34:39,826 [Worker-86] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:34:39,826 [Worker-86] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:36:20,441 [Worker-90] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:36:20,441 [Worker-90] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:36:20,456 [Worker-90] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:36:20,456 [Worker-90] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:37:38,999 [Worker-82] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:37:39,002 [Worker-82] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:37:39,004 [Worker-82] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:37:39,004 [Worker-82] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:38:11,294 [Worker-91] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:38:11,297 [Worker-91] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:38:11,300 [Worker-91] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:38:11,301 [Worker-91] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:38:24,122 [Worker-86] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:38:24,124 [Worker-86] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:38:24,125 [Worker-86] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:38:24,126 [Worker-86] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:38:48,499 [Worker-85] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:38:48,501 [Worker-85] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:38:48,503 [Worker-85] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:38:48,504 [Worker-85] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:39:01,033 [Worker-88] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:39:01,035 [Worker-88] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:39:01,036 [Worker-88] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:39:01,037 [Worker-88] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:40:34,659 [Worker-82] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:40:34,662 [Worker-82] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:40:34,664 [Worker-82] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:40:34,664 [Worker-82] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:40:51,076 [Worker-82] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:40:51,079 [Worker-82] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:40:51,081 [Worker-82] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:40:51,081 [Worker-82] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:40:57,294 [Worker-93] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:40:57,297 [Worker-93] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:40:57,299 [Worker-93] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:40:57,300 [Worker-93] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:41:23,315 [Worker-91] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:41:23,318 [Worker-91] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:41:23,320 [Worker-91] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:41:23,320 [Worker-91] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 12:41:26,102 [Worker-87] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:41:26,104 [Worker-87] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 12:41:26,107 [Worker-87] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 12:41:26,108 [Worker-87] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:09:02,194 [Worker-94] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:09:02,197 [Worker-94] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:09:02,199 [Worker-94] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:09:02,200 [Worker-94] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:09:26,128 [Worker-100] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:09:26,130 [Worker-100] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:09:26,137 [Worker-100] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:09:26,138 [Worker-100] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:09:52,697 [Worker-87] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:09:52,699 [Worker-87] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:09:52,701 [Worker-87] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:09:52,702 [Worker-87] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:09:56,988 [Worker-101] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:09:56,991 [Worker-101] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:09:56,992 [Worker-101] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:09:56,993 [Worker-101] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:10:19,663 [Worker-99] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:10:19,666 [Worker-99] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:10:19,668 [Worker-99] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:10:19,669 [Worker-99] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:10:41,065 [Worker-100] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:10:41,067 [Worker-100] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:10:41,070 [Worker-100] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:10:41,071 [Worker-100] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:11:05,901 [Worker-99] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:11:05,903 [Worker-99] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:11:05,905 [Worker-99] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:11:05,906 [Worker-99] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:11:09,395 [Worker-101] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:11:09,398 [Worker-101] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:11:09,401 [Worker-101] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:11:09,401 [Worker-101] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:11:34,221 [Worker-99] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:11:34,223 [Worker-99] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:11:34,225 [Worker-99] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:11:34,225 [Worker-99] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:11:38,178 [Worker-94] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:11:38,180 [Worker-94] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:11:38,182 [Worker-94] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:11:38,183 [Worker-94] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:11:39,586 [Worker-103] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:11:39,589 [Worker-103] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:11:39,590 [Worker-103] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:11:39,591 [Worker-103] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:12:08,071 [Worker-104] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:12:08,073 [Worker-104] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:12:08,075 [Worker-104] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:12:08,075 [Worker-104] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:12:34,486 [Worker-101] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:12:34,489 [Worker-101] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:12:34,490 [Worker-101] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:12:34,491 [Worker-101] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:12:35,583 [Worker-100] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:12:35,586 [Worker-100] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:12:35,587 [Worker-100] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:12:35,588 [Worker-100] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:12:54,763 [Worker-103] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:12:54,765 [Worker-103] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:12:54,767 [Worker-103] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:12:54,768 [Worker-103] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:13:03,352 [Worker-99] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:13:03,354 [Worker-99] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:13:03,356 [Worker-99] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:13:03,357 [Worker-99] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:13:10,418 [Worker-99] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:13:10,421 [Worker-99] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:13:10,423 [Worker-99] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:13:10,424 [Worker-99] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:13:40,494 [Worker-102] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:13:40,497 [Worker-102] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:13:40,498 [Worker-102] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:13:40,499 [Worker-102] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:13:59,644 [Worker-100] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:13:59,647 [Worker-100] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:13:59,649 [Worker-100] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:13:59,650 [Worker-100] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:14:26,373 [Worker-98] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:14:26,375 [Worker-98] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:14:26,377 [Worker-98] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:14:26,378 [Worker-98] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:17:34,301 [Worker-102] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:17:34,303 [Worker-102] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:17:34,305 [Worker-102] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:17:34,307 [Worker-102] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:18:12,376 [Worker-105] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:18:12,379 [Worker-105] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:18:12,382 [Worker-105] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:18:12,382 [Worker-105] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:18:23,998 [Worker-105] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:18:24,001 [Worker-105] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:18:24,003 [Worker-105] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:18:24,003 [Worker-105] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:22:31,352 [Worker-110] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:22:31,355 [Worker-110] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:22:31,356 [Worker-110] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:22:31,357 [Worker-110] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:22:32,702 [Worker-109] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:22:32,704 [Worker-109] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:22:32,705 [Worker-109] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:22:32,706 [Worker-109] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:22:42,165 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:22:42,168 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:22:42,170 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:22:42,170 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:22:48,430 [Worker-110] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:22:48,433 [Worker-110] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:22:48,437 [Worker-110] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:22:48,438 [Worker-110] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:22:59,182 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:22:59,185 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:22:59,186 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:22:59,187 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:23:12,683 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:23:12,685 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:23:12,687 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:23:12,688 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:27:22,358 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:27:22,361 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:27:22,362 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:27:22,363 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:28:23,756 [Worker-114] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:28:23,758 [Worker-114] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:28:23,760 [Worker-114] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:28:23,760 [Worker-114] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:29:10,484 [Worker-106] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:29:10,486 [Worker-106] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:29:10,488 [Worker-106] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:29:10,488 [Worker-106] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:29:23,446 [Worker-114] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:29:23,448 [Worker-114] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:29:23,449 [Worker-114] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:29:23,449 [Worker-114] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:29:32,163 [Worker-113] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:29:32,166 [Worker-113] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:29:32,167 [Worker-113] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:29:32,168 [Worker-113] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:29:36,304 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:29:36,306 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:29:36,308 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:29:36,308 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:29:38,423 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:29:38,425 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:29:38,427 [Worker-108] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:29:38,428 [Worker-108] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:29:43,697 [Worker-103] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:29:43,699 [Worker-103] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:29:43,701 [Worker-103] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:29:43,701 [Worker-103] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:30:49,810 [Worker-113] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:30:49,812 [Worker-113] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:30:49,814 [Worker-113] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:30:49,814 [Worker-113] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:33:56,802 [Worker-117] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:33:56,805 [Worker-117] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:33:56,807 [Worker-117] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:33:56,808 [Worker-117] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:34:07,749 [Worker-119] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:34:07,752 [Worker-119] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:34:07,754 [Worker-119] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:34:07,754 [Worker-119] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources +2015-12-19 13:35:30,537 [Worker-119] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:35:30,539 [Worker-119] INFO o.e.m.c.i.embedder.EclipseLogger - Copying 1 resource +2015-12-19 13:35:30,540 [Worker-119] WARN o.e.m.c.i.embedder.EclipseLogger - Using platform encoding (Cp1250 actually) to copy filtered resources, i.e. build is platform dependent! +2015-12-19 13:35:30,541 [Worker-119] INFO o.e.m.c.i.embedder.EclipseLogger - skip non existing resourceDirectory D:\Z - Norbi cucca\0 Projektek\TheButtonMCAutoFlairProto\Spigot plugin\TheButtonAutoFlair\src\test\resources diff --git a/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.6.2.20150902-0002.xml b/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.6.2.20150902-0002.xml new file mode 100644 index 0000000..e33758c --- /dev/null +++ b/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.6.2.20150902-0002.xml @@ -0,0 +1,43 @@ + + + + %date [%thread] %-5level %logger{35} - %msg%n + + + OFF + + + + + ${org.eclipse.m2e.log.dir}/0.log + + ${org.eclipse.m2e.log.dir}/%i.log + 1 + 10 + + + 100MB + + + %date [%thread] %-5level %logger{35} - %msg%n + + + + + + WARN + + + + + + + + + + + + + + + diff --git a/.metadata/.plugins/org.eclipse.mylyn.tasks.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.mylyn.tasks.ui/dialog_settings.xml new file mode 100644 index 0000000..9e1d9ed --- /dev/null +++ b/.metadata/.plugins/org.eclipse.mylyn.tasks.ui/dialog_settings.xml @@ -0,0 +1,18 @@ + +
+
+ + + + + + +
+ + + + + +
+
+
diff --git a/.metadata/.plugins/org.eclipse.pde.core/.cache/clean-cache.properties b/.metadata/.plugins/org.eclipse.pde.core/.cache/clean-cache.properties new file mode 100644 index 0000000..9be39ca --- /dev/null +++ b/.metadata/.plugins/org.eclipse.pde.core/.cache/clean-cache.properties @@ -0,0 +1,2 @@ +#Cached timestamps +#Sat Dec 12 23:02:54 CET 2015 diff --git a/.metadata/.plugins/org.eclipse.pde.core/.extensions/.contributions.1 b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.contributions.1 new file mode 100644 index 0000000..fe6d53e Binary files /dev/null and b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.contributions.1 differ diff --git a/.metadata/.plugins/org.eclipse.pde.core/.extensions/.contributors.1 b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.contributors.1 new file mode 100644 index 0000000..01838df Binary files /dev/null and b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.contributors.1 differ diff --git a/.metadata/.plugins/org.eclipse.pde.core/.extensions/.extraData.1 b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.extraData.1 new file mode 100644 index 0000000..72c7bfd Binary files /dev/null and b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.extraData.1 differ diff --git a/.metadata/.plugins/org.eclipse.pde.core/.extensions/.mainData.1 b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.mainData.1 new file mode 100644 index 0000000..ad9aeb1 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.mainData.1 differ diff --git a/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTable.7 b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTable.7 new file mode 100644 index 0000000..dde617f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTable.7 @@ -0,0 +1,10 @@ +#safe table +#Fri Dec 04 23:20:59 CET 2015 +.contributors=0 +.table=0 +.mainData=0 +.namespaces=0 +.orphans=0 +.extraData=0 +.contributions=0 +.crc9793898e.v1 diff --git a/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTable.8 b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTable.8 new file mode 100644 index 0000000..c9dd71b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTable.8 @@ -0,0 +1,10 @@ +#safe table +#Fri Dec 04 23:21:02 CET 2015 +.contributors=1 +.table=1 +.mainData=1 +.namespaces=1 +.orphans=1 +.extraData=1 +.contributions=1 +.crc68d5bb08.v1 diff --git a/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTableLock b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.manager/.fileTableLock new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.pde.core/.extensions/.namespaces.1 b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.namespaces.1 new file mode 100644 index 0000000..dcb169b Binary files /dev/null and b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.namespaces.1 differ diff --git a/.metadata/.plugins/org.eclipse.pde.core/.extensions/.orphans.1 b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.orphans.1 new file mode 100644 index 0000000..9b48e83 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.orphans.1 differ diff --git a/.metadata/.plugins/org.eclipse.pde.core/.extensions/.table.1 b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.table.1 new file mode 100644 index 0000000..0fe6685 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.pde.core/.extensions/.table.1 differ diff --git a/.metadata/.plugins/org.eclipse.pde.core/.local_targets/1449259517199.target b/.metadata/.plugins/org.eclipse.pde.core/.local_targets/1449259517199.target new file mode 100644 index 0000000..8208402 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.pde.core/.local_targets/1449259517199.target @@ -0,0 +1,15 @@ + + + + + + +win32 +win32 +x86_64 +en_US + + +-Dosgi.requiredJavaVersion=1.6 -Xms40m -Xmx512m + + diff --git a/.metadata/.plugins/org.eclipse.pde.core/SavedExternalPluginList.txt b/.metadata/.plugins/org.eclipse.pde.core/SavedExternalPluginList.txt new file mode 100644 index 0000000..3ff2e3f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.pde.core/SavedExternalPluginList.txt @@ -0,0 +1,849 @@ +# List of external plug-in models previously loaded. Timestamp: 1449259565010 +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/ch.qos.logback.classic_1.0.7.v20121108-1250.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/ch.qos.logback.core_1.0.7.v20121108-1250.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/ch.qos.logback.slf4j_1.0.7.v20121108-1250.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/com.android.ide.eclipse.base_22.3.0.v201310242005-887826.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/com.android.ide.eclipse.ddms_22.3.0.v201310242005-887826.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/com.android.ide.eclipse.gldebugger_22.3.0.v201310242005-887826.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/guava-18.0.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/com.google.guava_15.0.0.v201403281430.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/com.ibm.icu_52.1.1.v201501240615.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/com.jcraft.jsch_0.1.50.v201403120620.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/com.jcraft.jsch_0.1.51.v201410302000.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/com.sun.el_2.2.0.v201303151357.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/java_cup.runtime_0.10.0.v201005080400.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javaewah_0.7.9.v201401101600.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.activation_1.1.0.v201211130549.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.annotation_1.2.0.v201401042248.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.el_2.2.0.v201303151357.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.inject_1.0.0.v20091030.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.jws_2.0.0.v201005080400.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.mail_1.4.0.v201005080615.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.persistence_2.1.0.v201304241213.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.servlet_3.0.0.v201112011016.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.servlet.jsp_2.2.0.v201112011158.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.wsdl_1.5.1.v201012040544.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.wsdl_1.6.2.v201012040545.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.xml_1.3.4.v201005080400.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.xml.rpc_1.1.0.v201209140446/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.xml.soap_1.2.0.v201005080501/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.xml.stream_1.0.1.v201004272200.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/javax.xml.ws_2.1.0.v200902101523.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/net.sourceforge.lpg.lpgjavaruntime_1.1.0.v201004271650.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.ant_1.9.2.v201404171502/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.axis_1.4.0.v201005080400/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.batik.css_1.7.0.v201011041433.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.batik.util_1.7.0.v201011041433.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.batik.util.gui_1.7.0.v200903091627.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.bcel_5.2.0.v201005080400.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.commons.codec_1.6.0.v201305230611.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.commons.collections_3.2.0.v2013030210310.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.commons.compress_1.6.0.v201310281400.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.commons.discovery_0.2.0.v201004190315/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.commons.httpclient_3.1.0.v201012070820.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.commons.io_2.0.1.v201105210651.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.commons.lang_2.6.0.v201404270220.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.commons.logging_1.0.4.v201101211617.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.commons.logging_1.1.1.v201101211721.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.commons.net_3.2.0.v201305141515.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.felix.gogo.command_0.10.0.v201209301215.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.felix.gogo.runtime_0.10.0.v201209301036.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.felix.gogo.shell_0.10.0.v201212101605.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.httpcomponents.httpclient_4.3.6.v201411290715.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.httpcomponents.httpcore_4.3.3.v201411290715.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.jasper.glassfish_2.2.2.v201501141630.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.log4j_1.2.15.v201012070815.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.lucene.analysis_3.5.0.v20120725-1805.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.lucene.core_3.5.0.v20120725-1805.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.velocity_1.5.0.v200905192330.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.ws.commons.util_1.0.1.v20100518-1140.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.wsil4j_1.0.0.v200901211807.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.xalan_2.7.1.v201005080400.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.xerces_2.9.0.v201101211617.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.xml.resolver_1.2.0.v201005080400.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.xml.serializer_2.7.1.v201005080400.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.apache.xmlrpc_3.0.0.v20100427-1100.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ant.core_3.3.1.v20150123-1553.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ant.launching_1.0.400.v20140518-0030.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ant.ui_3.5.500.v20140521-1557.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.compare_3.5.501.v20140817-1445.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.compare.core_3.5.400.v20130903-0736.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.compare.win32_1.0.200.v20130514-1224.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.commands_3.6.100.v20140528-1422.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.contenttype_3.4.200.v20140207-1251.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.databinding_1.4.2.v20140729-1044.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.databinding.beans_1.2.200.v20140214-0004.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.databinding.observable_1.4.1.v20140210-1835.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.databinding.property_1.4.200.v20140214-0004.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.expressions_3.4.600.v20140128-0851.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.externaltools_1.0.300.v20140219-0051.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.filebuffers_3.5.400.v20140127-1516.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.filesystem_1.4.100.v20140514-1614.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.filesystem.java7_1.0.0.v20140429-1531.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.filesystem.win32.x86_64_1.4.0.v20140124-1940.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.jobs_3.6.1.v20141014-1248.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.net_1.2.200.v20140124-2013.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.net.win32.x86_64_1.0.100.v20140124-2013.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.resources_3.9.1.v20140825-1431.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.resources.win32.x86_64_3.5.0.v20140124-1940.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.runtime_3.10.0.v20140318-2214.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.runtime.compatibility_3.2.200.v20140128-0851.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.runtime.compatibility.registry_3.5.300.v20140128-0851/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.core.variables_3.2.800.v20130819-1716.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.cvs_1.4.100.v20150204-1700.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.common.doc.user_1.7.0.20090521092446.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity_1.2.11.v201401230755.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.apache.derby_1.0.103.v201212070447.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.apache.derby.dbdefinition_1.0.2.v201107221459.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.apache.derby.ui_1.0.3.v201107221459.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.console.profile_1.0.10.v201109250955.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.db.generic_1.0.1.v201107221459.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.db.generic.ui_1.0.2.v201211200622.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.dbdefinition.genericJDBC_1.0.2.v201310181001.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.doc.user_1.7.0.20090521092446.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.doc.user.contexts_1.7.0.20090521092446.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.oda_3.4.3.v201405301249.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.oda.consumer_3.2.6.v201403131814.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.oda.design_3.3.6.v201403131814.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.oda.design.ui_3.2.9.v201403131814.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.oda.flatfile_3.1.8.v201403010906.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.oda.flatfile.ui_3.1.9.v201403131825.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.oda.profile_3.2.9.v201403131814.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.oda.template.ui_3.2.5.v201403131814.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.sqm.core_1.2.8.v201401230755.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.sqm.core.ui_1.2.3.v201212070447.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.sqm.server.ui_1.1.101.v201212070447.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.ui_1.2.4.v201212070447.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.connectivity.ui.dse_1.1.5.v201212070447.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.doc.user_1.7.0.20090521092446.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.finfo_1.5.1.v200906161800.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.hsqldb_1.0.0.v201107221502.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.hsqldb.dbdefinition_1.0.0.v201107221502.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.hsqldb.ui_1.0.0.v201108120600.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ibm_1.0.0.v201401170830.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ibm.db2_1.0.0.v201401170830.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ibm.db2.iseries_1.0.2.v201107221502.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ibm.db2.iseries.dbdefinition_1.0.3.v201107221502.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ibm.db2.iseries.ui_1.0.3.v201212120614.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ibm.db2.luw_1.0.3.v201401170830.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ibm.db2.luw.dbdefinition_1.0.7.v201405302027.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ibm.db2.luw.ui_1.0.6.v201402010752.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ibm.db2.zseries_1.0.2.v201107221502.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ibm.db2.zseries.dbdefinition_1.0.4.v201107221502.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ibm.db2.zseries.ui_1.0.2.v201202100836.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ibm.informix_1.0.1.v201107221502.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ibm.informix.dbdefinition_1.0.4.v201107221502.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ibm.informix.ui_1.0.3.v201202100836.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ibm.ui_1.0.0.v201107221502.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ingres_1.0.0.v200906111150.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ingres.dbdefinition_1.0.0.v200906161800.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.ingres.ui_1.0.0.v201105270214.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.jdt.classpath_1.0.1.v201107221501.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.msft.sqlserver_1.0.3.v201308161009.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.msft.sqlserver.dbdefinition_1.0.1.v201201240505.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.msft.sqlserver.ui_1.0.4.v201308031011.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.mysql_1.0.4.v201212120617.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.mysql.dbdefinition_1.0.4.v201109022331.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.mysql.ui_1.0.0.v201109022331.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.oda.ws_1.2.6.v201403131825.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.oda.ws.ui_1.2.6.v201403131825.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.oda.xml_1.2.5.v201403131825.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.oda.xml.ui_1.2.7.v201403131825.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.oracle_1.0.0.v201107221506.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.oracle.dbdefinition_1.0.103.v201206010214.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.oracle.ui_1.0.3.v201201131121.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.postgresql_1.1.1.v201205252207.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.postgresql.dbdefinition_1.0.2.v201110070445.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.postgresql.ui_1.0.0.v201107221506.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sap.maxdb_1.0.0.v201107221507.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sap.maxdb.dbdefinition_1.0.0.v201107221507.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sap.maxdb.ui_1.0.0.v201107221507.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sqlite_1.0.0.v201002041100.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sqlite.dbdefinition_1.0.2.v201206010441.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sqlite.ui_1.0.0.v201107221507.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sybase_1.0.1.v201107221507.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sybase.asa_1.0.2.v201212120618.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sybase.asa.dbdefinition_1.0.0.v200906161800.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sybase.asa.models_1.0.0.v201107221507.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sybase.asa.schemaobjecteditor.examples_2.5.0.200810071.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sybase.asa.ui_1.0.1.v200906111204.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sybase.ase_1.0.3.v201212120618.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sybase.ase.dbdefinition_1.0.0.v201107221507.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sybase.ase.models_1.0.1.v201010140307.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sybase.ase.ui_1.0.1.v200906020900.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sybase.models_1.0.0.v201010140307.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.enablement.sybase.ui_1.0.0.v200906090452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.help_1.5.0.v200906020553.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.intro_1.7.0.v201005281800.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.modelbase.dbdefinition_1.0.2.v201107221519.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.modelbase.derby_1.0.0.v201107221519.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.modelbase.sql_1.0.6.v201208230744.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.modelbase.sql.edit_1.0.2.v201208230744.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.modelbase.sql.query_1.1.4.v201212120619.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.modelbase.sql.query.edit_1.0.1.v201110151245.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.modelbase.sql.xml.query_1.0.2.v201201131123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.oda.cshelp_1.1.2.v201309200751.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.common.ui_1.0.1.v201212120623.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.data.core_1.2.3.v201212120623.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.data.ui_1.2.2.v201212120623.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.db.derby_1.0.0.v201107221520.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.db.derby.ui_1.0.0.v200906020900.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.db.generic_1.0.0.v201107221520.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.db.generic.ui_1.0.0.v200906020900.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.ddlgen.ui_1.0.3.v201211200616.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.debugger.core_1.0.1.v201107221520.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.debugger.core.ui_1.0.0.v201003161000.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.doc.user_1.7.0.20090521092446.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.doc.user.contexts_1.7.0.20090521092446.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.editor.core_1.0.3.v201212120623.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.editor.core.ui_1.0.0.v201001150815.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.parsers.sql_1.0.2.v201107221520.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.parsers.sql.lexer_1.0.1.v201107221520.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.parsers.sql.query_1.2.1.v201201250511.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.parsers.sql.xml.query_1.0.0.v201107221520.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.plan_1.0.0.v201107221520.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.result_1.1.6.v201402080246.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.result.ui_1.1.3.v201302061703.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.routineeditor_1.0.0.v201107221520.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.routineeditor.ui_1.0.3.v201211200616.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.schemaobjecteditor_1.1.0.v200906022302.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.schemaobjecteditor.ui_1.1.1.200810071.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.schemaobjecteditor.ui.pages_1.1.1.200810071.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.sql_1.0.1.v201110050515.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.sql.ui_1.0.1.v201201270735.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.sqlbuilder_1.0.7.v201401250704.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.sqleditor_1.0.4.v201212120623.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.sqlscrapbook_1.0.2.v201205310922.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.datatools.sqltools.tabledataeditor_1.0.2.v201212120623.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.debug.core_3.9.1.v20140805-1629.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.debug.ui_3.10.2.v20141014-1039.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.draw2d_3.9.101.201408150207.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.dstore.core_3.4.0.201411132153.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.dstore.extra_2.1.400.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.core.commands_0.10.2.v20140424-2344.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.core.contexts_1.3.100.v20140407-1019.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.core.di_1.4.0.v20140414-1837.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.core.di.extensions_0.12.0.v20140417-2033.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.core.services_1.2.1.v20140808-1251.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.ui.bindings_0.10.200.v20140424-2042.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.ui.css.core_0.10.100.v20140424-2042.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.ui.css.swt_0.11.101.v20140818-1343.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.ui.css.swt.theme_0.9.300.v20141126-1957.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.ui.di_1.0.0.v20140328-2112.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.ui.model.workbench_1.1.0.v20140512-1820.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.ui.services_1.1.0.v20140328-1925.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.ui.widgets_1.0.0.v20140514-1823.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.ui.workbench_1.2.2.v20141212-1259.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.ui.workbench.addons.swt_1.1.2.v20141126-1310.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.ui.workbench.renderers.swt_0.12.2.v20150204-1353.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.ui.workbench.swt_0.12.100.v20141126-1150.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.e4.ui.workbench3_0.12.0.v20140227-2118.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ecf_3.4.0.v20141221-2352.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ecf.filetransfer_5.0.0.v20141221-2352.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ecf.identity_3.4.0.v20141221-2352.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ecf.provider.filetransfer_3.2.200.v20141221-2352.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient4_1.0.1043.v20141221-2352.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.httpclient4.ssl_1.0.0.v20141221-2352.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20141221-2352.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ecf.ssl_1.1.0.v20141221-2352.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.egit_3.4.2.201412180340-r.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.egit.core_3.4.2.201412180340-r.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.egit.doc_3.4.2.201412180340-r.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.egit.mylyn.ui_3.4.2.201412180340-r.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.egit.ui_3.4.2.201412180340-r.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf_2.6.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.ant_2.8.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.codegen_2.10.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.codegen.ecore_2.10.2.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.codegen.ecore.ui_2.10.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.codegen.ui_2.6.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.common_2.10.1.v20150123-0348.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.common.ui_2.9.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.converter_2.7.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.databinding_1.3.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.databinding.edit_1.3.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.ecore_2.10.2.v20150123-0348.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.ecore.change_2.10.0.v20150123-0348.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.ecore.change.edit_2.6.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.ecore.edit_2.9.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.ecore.editor_2.10.1.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.ecore.xmi_2.10.2.v20150123-0348.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.edit_2.10.1.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.edit.ui_2.10.2.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.exporter_2.7.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.importer_2.9.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.importer.ecore_2.8.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.importer.java_2.7.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.importer.rose_2.7.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.mapping_2.8.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.mapping.ecore_2.6.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.mapping.ecore.editor_2.6.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.mapping.ecore2ecore_2.8.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.mapping.ecore2ecore.editor_2.7.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.mapping.ecore2xml_2.8.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.mapping.ecore2xml.ui_2.7.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.emf.mapping.ui_2.6.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.epp.mpc.core_1.3.2.v20141216-2136.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.epp.mpc.help.ui_1.3.2.v20141006-1249.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.epp.mpc.ui_1.3.2.v20150204-1930.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.epp.package.jee_4.4.2.20150219-0708/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.app_1.3.200.v20130910-1609.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.bidi_0.10.0.v20130327-1442.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.common_3.6.200.v20130402-1505.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.concurrent_1.1.0.v20130327-1442.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.console_1.1.0.v20140131-1639.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.ds_1.4.200.v20131126-2331.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.event_1.3.100.v20140115-1647.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.frameworkadmin_2.0.100.v20131209-2144.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.frameworkadmin.equinox_1.0.500.v20131211-1531.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.http.jetty_3.0.200.v20131021-1843.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.http.registry_1.1.300.v20130402-1529.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.http.servlet_1.1.500.v20140318-1755.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.jsp.jasper_1.0.400.v20130327-1442.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.jsp.jasper.registry_1.0.300.v20130327-1442.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20150204-1316/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.artifact.repository_1.1.300.v20131211-1531.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.console_1.0.300.v20131113-1212.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.core_2.3.0.v20131211-1531.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.director_2.3.100.v20140224-1921.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.director.app_1.0.300.v20150129-0838.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.directorywatcher_1.1.0.v20131211-1531.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.discovery_1.0.300.v20131210-1027.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.discovery.compatibility_1.0.200.v20131211-1531.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.engine_2.3.0.v20140506-1720.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.extensionlocation_1.2.100.v20131119-0908.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.garbagecollector_1.0.200.v20131115-1210.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.jarprocessor_1.0.300.v20131211-1531.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.metadata_2.2.0.v20131211-1531.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.metadata.repository_1.2.100.v20131209-2144.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.operations_2.4.0.v20131119-0908.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.publisher_1.3.0.v20140911-0143.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.publisher.eclipse_1.1.200.v20140414-0825.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.ql_2.0.100.v20131211-1531.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.reconciler.dropins_1.1.200.v20131119-0908.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.repository_2.3.0.v20131211-1531.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.repository.tools_2.1.0.v20131211-1531.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.touchpoint.eclipse_2.1.200.v20140512-1650.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.touchpoint.natives_1.1.100.v20140523-0116.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.transport.ecf_1.1.0.v20140408-1354.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.ui_2.3.0.v20140404-1657.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.ui.discovery_1.0.100.v20131210-1027.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.ui.importexport_1.1.0.v20131210-1027.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk_1.0.300.v20140407-1803.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.ui.sdk.scheduler_1.2.0.v20140422-1847.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.updatechecker_1.1.200.v20131119-0908.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.p2.updatesite_1.0.400.v20131211-1531.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.preferences_3.5.200.v20140224-1527.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.registry_3.5.400.v20140428-1507.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.security_1.2.0.v20130424-1801.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.security.ui_1.1.200.v20130626-2037.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.security.win32.x86_64_1.0.100.v20130327-1442.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.simpleconfigurator_1.1.0.v20131217-1203.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.simpleconfigurator.manipulator_2.0.0.v20131217-1203.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.equinox.util_1.0.500.v20130404-1337.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.gef_3.9.100.201408150207.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.help_3.6.0.v20130326-1254.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.help.base_4.0.201.v20150204-1700.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.help.ui_4.0.100.v20140401-0608.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.help.webapp_3.6.301.v20150115-1843.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt_3.10.1.v20150204-1700.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.annotation_1.1.0.v20140129-1625.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.annotation_2.0.0.v20140415-1436.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.apt.core_3.3.600.v20150122-0735.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.apt.pluggable.core_1.0.400.v20131113-0353.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.apt.ui_3.3.400.v20140311-1758.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.compiler.apt_1.1.0.v20150122-0735.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.compiler.tool_1.0.300.v20150114-1827.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.core_3.10.2.v20150120-1634.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.core.manipulation_1.5.0.v20130605-1748.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.debug_3.8.102.v20150115-1323/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.debug.ui_3.6.300.v20140512-1926.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.doc.user_3.10.1.v20140827-1504.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.junit_3.7.300.v20140418-0836.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.junit.core_3.7.300.v20140409-1618.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.junit.runtime_3.4.500.v20140527-1138.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.junit4.runtime_1.1.400.v20140314-0036.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.launching_3.7.102.v20141111-0953.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jdt.ui_3.10.2.v20141014-1419.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jem_2.0.600.v201302011850.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jem.beaninfo_2.0.300.v201302011850.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jem.beaninfo.vm_2.0.300.v201302011850.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jem.beaninfo.vm.common_2.0.300.v201302011850.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jem.proxy_2.0.410.v201411191736.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jem.util_2.1.200.v201404021757.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jem.workbench_2.0.400.v201302011850.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jetty.continuation_8.1.16.v20140903.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jetty.http_8.1.16.v20140903.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jetty.io_8.1.16.v20140903.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jetty.security_8.1.16.v20140903.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jetty.server_8.1.16.v20140903.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jetty.servlet_8.1.16.v20140903.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jetty.util_8.1.16.v20140903.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jetty.webapp_8.1.3.v20120522.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jetty.xml_8.1.3.v20120522.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jface_3.10.2.v20141021-1035.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jface.databinding_1.6.200.v20140528-1422.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jface.text_3.9.2.v20141003-1326.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jgit_3.4.2.201412180340-r.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jgit.archive_3.4.2.201412180340-r.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.common.branding_1.4.0.v201310142259.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.common.core_1.4.0.v201310142259.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.common.eclipselink.branding_1.3.100.v201309202144.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.common.eclipselink.core_1.3.100.v201308091549.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.common.ui_1.4.0.v201310142259.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.common.utility_2.3.0.v201311210251.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.dbws.eclipselink.branding_1.2.100.v201309202144.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.dbws.eclipselink.core.gen_1.1.100.v201308132122.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.dbws.eclipselink.ui_1.1.101.v201501152048.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.doc.user_3.2.100.v201308231650.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jaxb.branding_1.4.0.v201309202144.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jaxb.core_1.4.1.v201501152041.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jaxb.core.schemagen_1.1.100.v201309202144.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jaxb.eclipselink.branding_1.4.100.v201310142259.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jaxb.eclipselink.core_1.3.100.v201310142259.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jaxb.eclipselink.core.schemagen_1.2.100.v201310142259.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jaxb.eclipselink.ui_1.4.100.v201310142259.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jaxb.ui_1.5.0.v201308091549.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jpa.annotate_1.0.100.v201309261652.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jpa.branding_3.4.0.v201309202144.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jpa.core_3.4.0.v201312052110.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jpa.db_2.2.100.v201311150251.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jpa.db.ui_2.1.100.v201309202144.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jpa.eclipselink.branding_3.4.0.v201309202144.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jpa.eclipselink.core_2.4.0.v201309122001.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jpa.eclipselink.core.ddlgen_2.2.100.v201309202144.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jpa.eclipselink.ui_2.4.0.v201308271953.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jpa.gen_2.3.100.v201309061349.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jpt.jpa.ui_3.4.0.v201312022017.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jsch.core_1.1.500.v20131112-1442.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jsch.ui_1.1.500.v20131112-1442.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jsf.branding_3.5.0.v201309172308.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.common.annotations.controller_1.1.300.v201302011850.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.common.annotations.core_1.1.300.v201302011850.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.common.annotations.ui_1.1.300.v201302011850.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.common.frameworks_1.1.601.v201302011850.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.common.project.facet.core_1.4.400.v201403261418.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.common.project.facet.ui_1.4.510.v201501141810.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.common.ui_1.0.201.v201208291950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ejb.doc.user_1.1.301.v201105130955.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ejb.ui_1.1.900.v201402130359.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ejb.ui.infopop_1.0.300.v201002231012.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee_1.1.802.v201502041526.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.core_1.3.100.v201404161520.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.doc.user_1.1.400.v201008122207.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.ejb_1.1.800.v201404021607.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.ejb.annotation.model_1.1.300.v201004110730.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.ejb.annotations.emitter_1.1.200.v201004110730.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.ejb.annotations.ui_1.1.200.v201004261420.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.ejb.annotations.xdoclet_1.2.200.v201103302126.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.infopop_1.0.300.v201309091923.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.jca_1.1.700.v201305311426.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.jca.ui_1.1.500.v201304231803.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.navigator.ui_1.1.600.v201302011850.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.ui_1.1.801.v201501141713.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.web_1.1.810.v201501141727.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.webservice_1.1.400.v201302011850.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.webservice.ui_1.1.500.v201302011850.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.j2ee.xdoclet.runtime_1.1.300.v201004280609.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jee_1.0.700.v201404092004.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jee.ejb_1.0.400.v201305061702.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jee.ui_1.0.701.v201408251535.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jee.web_1.0.500.v201404021628.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jsf.apache.trinidad.tagsupport_1.4.0.v201309172102.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jsf.common_1.5.100.v201409111805.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jsf.common.runtime_1.4.0.v201309172102.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jsf.common.ui_1.5.0.v201309172102.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jsf.core_1.7.100.v201409111805.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jsf.doc.user_1.5.0.v201309172352.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jsf.facelet.core_1.3.0.v201405282043.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jsf.facelet.ui_1.3.0.v201309172102.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jsf.facesconfig_1.5.0.v201309172102.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jsf.facesconfig.ui_1.5.0.v201309172102.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jsf.standard.tagsupport_1.5.0.v201309172102.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jsf.ui_1.6.0.v201309172102.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jsp.core_1.2.701.v201501151629.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jsp.ui_1.1.901.v201501261620.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.jsp.ui.infopop_1.0.200.v201309112106.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.pagedesigner_1.6.200.v201409302017.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.pagedesigner.jsf.ui_1.5.0.v201309172102.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.pagedesigner.jsp.core_1.5.0.v201309172102.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.server.core_1.2.400.v201309182039.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.server.generic.core_1.0.900.v201402262303.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.server.generic.jonas_1.5.500.v201405151744.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.server.generic.ui_1.0.600.v201402262303.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.server.preview.adapter_1.1.300.v201309182039.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.server.tomcat.core_1.1.601.v201501040116.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.server.tomcat.ui_1.1.400.v201311302002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.server.ui_1.1.300.v201309182039.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.server.ui.doc.user_1.0.600.v201309182117.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.server.ui.infopop_1.0.500.v201309182117.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.servlet.ui_1.1.801.v201409042158.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.servlet.ui.infopop_1.0.500.v201105121947.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.standard.schemas_1.2.201.v201501151629.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws_1.0.701.v201411261651.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.annotations.core_1.2.200.v201311102023.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.axis.consumption.core_1.0.500.v201401152035.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.axis.consumption.ui_1.0.750.v201311011546.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.axis.creation.ui_1.0.800.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.axis.infopop_1.0.400.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.axis.ui.doc.user_1.1.200.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.axis2.consumption.core_1.0.200.v201310240024.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.axis2.consumption.ui_1.0.200.v201310240024.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.axis2.core_1.0.300.v201310240024.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.axis2.creation.core_1.0.200.v201310240024.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.axis2.creation.ui_1.0.200.v201310240024.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.axis2.ui_1.0.400.v201310240024.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.axis2.ui.doc.user_1.0.200.v201310240024.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.consumption_1.0.750.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.consumption.infopop_1.0.400.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.consumption.ui_1.1.751.v201501131919.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.consumption.ui.doc.user_1.0.700.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.creation.ejb.ui_1.0.250.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.creation.ui_1.0.851.v201501131919.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.cxf.consumption.core_1.0.300.v201309232152.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.cxf.consumption.ui_1.0.300.v201309232152.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.cxf.core_1.1.200.v201404292022.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.cxf.creation.core_1.0.401.v201408111743.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.cxf.creation.ui_1.0.300.v201403242125.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.cxf.doc.user_1.0.300.v201309232209.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.cxf.ui_1.0.300.v201309232152.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.doc.user_1.0.700.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.infopop_1.0.400.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.jaxb.core_1.0.200.v201309232152.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.jaxrs.core_1.0.551.v201409041522.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.jaxrs.ui_1.0.651.v201409041522.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.jaxws.core_1.0.401.v201410232139.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.jaxws.doc.user_1.0.400.v201309232209.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.jaxws.dom.integration_1.0.300.v201309242047.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.jaxws.dom.runtime_1.0.300.v201309242047.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.jaxws.dom.ui_1.0.100.v201309242047.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.jaxws.ui_1.0.400.v201309232152.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.jaxws.utils_1.0.300.v201309242047.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.uddiregistry_1.0.550.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.jst.ws.ui_1.0.450.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ltk.core.refactoring_3.6.101.v20140817-1500.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ltk.ui.refactoring_3.7.100.v20140324-1358.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.archetype.common_1.6.2.20150902-0001/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.core_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.core.ui_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.discovery_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.editor_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.editor.xml_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.jdt_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.jdt.ui_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.launching_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.lifecyclemapping.defaults_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.logback.appender_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.logback.configuration_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.maven.indexer_1.6.2.20150902-0001/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.maven.runtime_1.6.2.20150902-0001/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.maven.runtime.slf4j.simple_1.6.2.20150902-0001/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.model.edit_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.profiles.core_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.profiles.ui_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.refactoring_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.scm_1.6.2.20150902-0002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.workspace.cli_0.3.1.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.wtp_1.1.0.20140611-1646.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.wtp.jaxrs_1.1.0.20140611-1646.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.wtp.jpa_1.1.0.e43-20140611-1648.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.wtp.jsf_1.1.0.20140611-1646.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.wtp.overlay_1.1.0.20140611-1646.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.m2e.wtp.overlay.ui_1.1.0.20140611-1646.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.bugzilla.core_3.14.2.v20150217-2341.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.bugzilla.ide_3.14.2.v20150218-0125.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.bugzilla.ui_3.14.2.v20150217-2341.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.commons.core_3.14.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.commons.identity.core_1.6.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.commons.net_3.14.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.commons.notifications.core_1.6.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.commons.notifications.feed_1.6.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.commons.notifications.ui_1.6.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.commons.repositories.core_1.6.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.commons.repositories.ui_1.6.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.commons.screenshots_3.14.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.commons.ui_3.14.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.commons.workbench_3.14.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.commons.xmlrpc_3.14.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.context.core_3.14.2.v20150218-0125.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.context.tasks.ui_3.14.2.v20150218-0125.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.context.ui_3.14.2.v20150218-0125.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.debug.ui_3.14.2.v20150218-0125.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.discovery.core_3.14.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.discovery.ui_3.14.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.help.ui_3.14.2.v20150217-2341.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.ide.ant_3.14.2.v20150218-0125.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.ide.ui_3.14.2.v20150218-0125.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.java.tasks_3.14.2.v20150218-0125.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.java.ui_3.14.2.v20150218-0125.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.monitor.core_3.14.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.monitor.ui_3.14.2.v20150217-2244.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.resources.ui_3.14.2.v20150218-0125.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.tasks.bugs_3.14.2.v20150217-2341.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.tasks.core_3.14.2.v20150217-2341.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.tasks.index.core_3.14.2.v20150217-2341.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.tasks.index.ui_3.14.2.v20150217-2341.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.tasks.search_3.14.2.v20150217-2341.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.tasks.ui_3.14.2.v20150217-2341.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.team.cvs_3.14.2.v20150218-0125.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.team.ui_3.14.2.v20150218-0125.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.confluence.core_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.confluence.ui_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.context.ui_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.core_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.core.ant_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.core.osgi_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.help.ui_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.html.core_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.markdown.core_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.markdown.ui_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.mediawiki.core_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.mediawiki.ui_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.tasks.ui_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.textile.core_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.textile.ui_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.tracwiki.core_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.tracwiki.ui_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.twiki.core_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.twiki.ui_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.mylyn.wikitext.ui_2.3.2.v20150217-2315.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.osgi_3.10.2.v20150203-1939.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.osgi.compatibility.state_1.0.1.v20140709-1414.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.osgi.services_3.4.0.v20140312-2051.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.osgi.util_3.3.0.v20131023-1243.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde_3.10.1.v20150204-1700.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde.api.tools_1.0.600.v20140520-1809.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde.api.tools.annotations_1.0.0.v20140602-1527.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde.api.tools.ui_1.0.501.v20140808-0849.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde.build_3.9.0.v20140415-2029/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde.core_3.10.2.v20150127-1015.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde.doc.user_3.10.2.v20150202-1407.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde.ds.core_1.0.300.v20140204-1740.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde.ds.ui_1.0.300.v20140204-1740.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde.junit.runtime_3.4.400.v20140204-1740.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde.launching_3.6.200.v20140521-1231.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde.runtime_3.4.400.v20140512-1555.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde.ua.core_1.0.301.v20140702-1823.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde.ua.ui_1.0.300.v20140307-1548.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde.ui_3.8.101.v20141001-1400.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.pde.ui.templates_3.4.800.v20140410-2009.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.persistence.antlr_3.2.0.v201302191141.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.persistence.asm_5.0.1.v201405080102.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.persistence.core_2.6.0.v20140809-296a69f.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.persistence.dbws_2.6.0.v20140809-296a69f.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.persistence.dbws.builder_2.6.0.v20140809-296a69f.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.persistence.jpa_2.6.0.v20140809-296a69f.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.persistence.jpa.jpql_2.6.0.v20140809-296a69f.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.persistence.moxy_2.6.0.v20130815-a4708b6.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.platform_4.4.2.v20150204-1700/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.platform.doc.user_4.4.2.v20141003-1449.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rcp_4.4.2.v20150204-1700.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse_3.5.0.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.connectorservice.dstore_3.1.301.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.connectorservice.local_2.1.400.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.connectorservice.ssh_2.1.300.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.connectorservice.telnet_1.2.300.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.core_3.3.100.201407181907.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.doc.user_3.4.100.201403101646.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.dstore.security_3.0.400.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.efs_2.1.401.201411041812.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.efs.ui_2.1.400.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.files.ui_3.2.200.201403211850.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.importexport_1.2.300.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.processes.ui_3.0.400.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.services_3.3.0.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.services.dstore_3.3.0.201406041609.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.services.files.ftp_3.0.500.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.services.local_2.2.0.201410241330.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.services.ssh_3.2.100.201403281521.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.services.telnet_2.0.400.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.shells.ui_3.0.500.201403271554.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.files.core_3.3.1.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.files.dstore_2.1.300.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.files.ftp_2.2.0.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.files.local_2.1.300.201403251512.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.files.ssh_2.1.300.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.processes.core_3.1.300.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.processes.dstore_2.1.400.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.processes.local_2.1.400.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.processes.shell.linux_1.1.400.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.shells.core_3.1.300.201403271554.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.shells.dstore_2.1.400.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.shells.local_2.1.400.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.shells.ssh_2.1.400.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.shells.telnet_1.2.300.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.terminals.core_1.0.300.201411271155.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.subsystems.terminals.ssh_1.0.200.201411271155.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.terminals.ui_1.2.200.201412161015.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.ui_3.3.100.201408221458.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.rse.useractions_1.1.500.201403100950.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.search_3.9.100.v20140226-1637.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.swt_3.103.2.v20150203-1313.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.swt.win32.win32.x86_64_3.103.2.v20150203-1351.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.team.core_3.7.0.v20130514-1224.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.team.cvs.core_3.3.600.v20131112-1442.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.team.cvs.ssh2_3.2.400.v20131112-1442.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.team.cvs.ui_3.3.600.v20130514-1224.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.team.ui_3.7.100.v20130710-1213.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.text_3.5.300.v20130515-1451.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.tm.terminal_3.3.0.201501281007.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.tm.terminal.ssh_2.1.400.201412161015.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.tm.terminal.telnet_2.1.400.201412161015.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.tm.terminal.view_2.4.200.201412161015.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui_3.106.1.v20141002-1150.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.browser_3.4.200.v20131003-1453.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.cheatsheets_3.4.200.v20131227-1524.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.console_3.5.300.v20140424-1437.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.editors_3.8.200.v20140401-1310.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.externaltools_3.2.300.v20140327-1949.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.forms_3.6.100.v20140422-1825.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.ide_3.10.2.v20141118-1227.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.ide.application_1.0.501.v20141111-1238.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.intro_3.4.200.v20130326-1254.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.intro.universal_3.2.701.v20150204-1123/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.navigator_3.5.401.v20140724-1117.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.navigator.resources_3.4.700.v20140407-1004.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.net_1.2.200.v20120807-0927.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.themes_1.0.1.v20141126-1957/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.trace_1.0.201.v20140702-1807.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.views_3.7.0.v20140408-0703.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.views.log_1.0.500.v20140512-1221.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.views.properties.tabbed_3.6.0.v20140519-0906.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.win32_3.2.400.v20140423-2207.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.workbench_3.106.2.v20150204-1030.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.ui.workbench.texteditor_3.9.0.v20140411-1521.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.update.configurator_3.3.300.v20140518-1928.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.command.env_1.0.450.v201401132311.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.command.env.core_1.0.250.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.command.env.doc.user_1.5.400.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.command.env.infopop_1.0.200.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.command.env.ui_1.1.151.v201501131919.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.common.core_1.2.0.v200908251833.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.common.emf_1.2.300.v201501292352.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.common.emfworkbench.integration_1.2.101.v201107081800.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.common.environment_1.0.400.v200912181831.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.common.frameworks_1.2.200.v201304241450.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.common.frameworks.ui_1.2.300.v201401292051.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.common.infopop_1.0.300.v201309101952.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.common.modulecore_1.2.401.v201408132036.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.common.modulecore.ui_1.0.201.v201208241542.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.common.project.facet.core_1.4.300.v201111030423.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.common.project.facet.ui_1.4.500.v201409111446.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.common.snippets_1.2.200.v201208080420.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.common.ui_1.1.500.v200911182011.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.common.uriresolver_1.2.100.v201305141634.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.css.core_1.1.800.v201402172058.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.css.ui_1.0.901.v201501212057.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.doc.user_1.2.0.v201309112106.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.dtd.core_1.1.700.v201211012112.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.dtd.ui_1.0.801.v201308100602.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.dtd.ui.infopop_1.0.400.v201309112106.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.dtdeditor.doc.user_1.0.700.v201208081537.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.html.core_1.1.802.v201501312139.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.html.ui_1.0.902.v201501212057.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.html.ui.infopop_1.0.201.v201409111852.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.internet.cache_1.0.700.v201211211430.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.internet.monitor.core_1.0.600.v201309182039.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.internet.monitor.ui_1.0.700.v201309182039.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.core_1.3.300.v201410221502.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.debug.core_3.1.100.v201405212207.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.debug.crossfire_1.0.400.v201402051800.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.debug.rhino_1.0.300.v201402051800.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.debug.rhino.debugger_1.0.400.v201402051800.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.debug.rhino.ui_1.0.300.v201405071359.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.debug.transport_1.0.200.v201402051800.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.debug.ui_1.0.400.v201402051800.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.doc_1.4.100.v201309042002.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.manipulation_1.0.500.v201402051800.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.support.firefox_1.0.500.v201402051800.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.support.ie_1.0.500.v201402051800.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.ui_1.1.500.v201409121658.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.web.core_1.0.700.v201307151913.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.web.support.jsp_1.0.600.v201307151913.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.jsdt.web.ui_1.0.800.v201403271809.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.server.core_1.6.2.v201409292121.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.server.discovery_1.0.501.v201501132217.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.server.http.core_1.0.300.v20130918_1641.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.server.http.ui_1.0.400.v20130918_1641.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.server.preview_1.1.300.v20130918_1641.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.server.preview.adapter_1.1.300.v20130918_1641.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.server.ui_1.5.100.v201407281532.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.server.ui.doc.user_1.1.600.v201309182117.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.server.ui.infopop_1.1.200.v201309182117.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.sse.core_1.1.900.v201401092025.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.sse.doc.user_1.1.100.v201208081537.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.sse.ui_1.3.301.v201501151629.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.sse.ui.infopop_1.0.300.v201309112106.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.standard.schemas_1.0.700.v201304171715.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.validation_1.2.600.v201501211647.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.validation.infopop_1.0.300.v201309101952.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.validation.ui_1.2.500.v201310231452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.web_1.1.800.v201312041437.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.web.ui_1.1.600.v201302011850.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.web.ui.infopop_1.0.300.v200805140206.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.webtools.doc.user_1.0.500.v201208081537.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.ws_1.1.350.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.ws.explorer_1.0.750.v201401291755.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.ws.infopop_1.0.400.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.ws.parser_1.0.550.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.ws.service.policy_1.0.400.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.ws.service.policy.ui_1.0.450.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.ws.ui_1.1.250.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.wsdl_1.2.350.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.wsdl.ui_1.2.650.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.wsdl.ui.doc.user_1.0.850.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.wsdl.validation_1.1.650.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.wsi_1.0.550.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.wsi.ui_1.0.550.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.wsi.ui.doc.user_1.0.750.v201309242123.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xml.core_1.1.902.v201501211904.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xml.ui_1.1.501.v201501212057.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xml.ui.infopop_1.0.400.v201309112106.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xml.xpath.core_1.3.0.v201108312022.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xml.xpath.ui_1.1.101.v201204252215.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xml.xpath2_1.1.0.v201309251557.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xml.xpath2.processor_2.1.101.v201409111854.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xml.xpath2.processor.doc.user_2.0.0.v201209212251.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xml.xpath2.wtptypes_2.0.0.v201208081543.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xmleditor.doc.user_1.0.700.v201208081537.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsd.core_1.1.900.v201401141857.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsd.ui_1.2.500.v201208081537.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsdeditor.doc.user_1.0.800.v201208081537.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsl_1.2.0.v201309251559.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsl.core_1.1.301.v201405151730.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsl.debug.ui_1.0.302.v201304240928.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsl.doc_1.0.100.v201309251559.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsl.exslt.core_1.0.0.v201005240422.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsl.exslt.ui_1.0.0.v201006012004.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsl.jaxp.debug_1.0.300.v201304102131.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsl.jaxp.debug.ui_1.0.200.v201103081755.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsl.jaxp.launching_1.0.300.v201304102131.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsl.launching_1.1.0.v201304240928.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsl.saxon_1.0.200.v201103081755.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsl.ui_1.1.301.v201304222136.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wst.xsl.xalan_1.0.100.v201208081544.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wtp.epp.package.capabilities_1.3.0.v201005102000.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wtp.epp.package.jee.intro_1.3.0.v201006142040.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wtp.javascript.capabilities_1.0.100.v201005102000.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wtp.jee.capabilities_1.0.100.v201005102000.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wtp.web.capabilities_1.0.100.v201005102000.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.wtp.xml.capabilities_1.0.100.v201005102000.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.xsd_2.10.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.eclipse.xsd.edit_2.7.0.v20150123-0452.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.hamcrest.core_1.3.0.v201303031735.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.jdom_1.1.1.v201101151400.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.jsoup_1.7.2.v201304221138.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.junit_4.11.0.v201303080030/ +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.mozilla.javascript_1.7.2.v201005080400.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.objectweb.asm_5.0.1.v201404251740.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.objectweb.asm.tree_5.0.1.v201404251740.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.sat4j.core_2.3.5.v201308161310.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.sat4j.pb_2.3.5.v201404071733.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.slf4j.api_1.7.2.v20121108-1250.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.sonatype.m2e.mavenarchiver_0.16.0.201401211452-signed-20140310144306.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.uddi4j_2.0.5.v200805270300.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.w3c.css.sac_1.3.1.v200903091627.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.w3c.dom.events_3.0.0.draft20060413_v201105210656.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.w3c.dom.smil_1.0.0.v200806040011.jar +file:/D:/Downloads/eclipse-jee-juno-SR2-win32-x86_64/eclipse/plugins/org.w3c.dom.svg_1.1.0.v201011041433.jar diff --git a/.metadata/.plugins/org.eclipse.rse.core/.log b/.metadata/.plugins/org.eclipse.rse.core/.log new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.rse.core/initializerMarks/org.eclipse.rse.internal.core.RSELocalConnectionInitializer.mark b/.metadata/.plugins/org.eclipse.rse.core/initializerMarks/org.eclipse.rse.internal.core.RSELocalConnectionInitializer.mark new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.norbi-pc_251/FP.local.files_0/node.properties b/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.norbi-pc_251/FP.local.files_0/node.properties new file mode 100644 index 0000000..28fb3f4 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.norbi-pc_251/FP.local.files_0/node.properties @@ -0,0 +1,57 @@ +# RSE DOM Node +00-name=NORBI-PC\:local.files +01-type=FilterPool +03-attr.default=true +03-attr.deletable=true +03-attr.id=local.files +03-attr.nonRenamable=false +03-attr.owningParentName=null +03-attr.release=200 +03-attr.singleFilterStringOnly=false +03-attr.singleFilterStringOnlyESet=false +03-attr.stringsCaseSensitive=true +03-attr.supportsDuplicateFilterStrings=false +03-attr.supportsNestedFilters=true +03-attr.type=default +06-child.00000.00-name=My Home +06-child.00000.01-type=Filter +06-child.00000.03-attr.default=false +06-child.00000.03-attr.filterType=default +06-child.00000.03-attr.id=My Home +06-child.00000.03-attr.nonChangable=false +06-child.00000.03-attr.nonDeletable=false +06-child.00000.03-attr.nonRenamable=false +06-child.00000.03-attr.promptable=false +06-child.00000.03-attr.relativeOrder=0 +06-child.00000.03-attr.release=200 +06-child.00000.03-attr.singleFilterStringOnly=false +06-child.00000.03-attr.stringsCaseSensitive=false +06-child.00000.03-attr.stringsNonChangable=false +06-child.00000.03-attr.supportsDuplicateFilterStrings=false +06-child.00000.03-attr.supportsNestedFilters=true +06-child.00000.06-child.00000.00-name=C\:\\Users\\Norbi\\* +06-child.00000.06-child.00000.01-type=FilterString +06-child.00000.06-child.00000.03-attr.default=false +06-child.00000.06-child.00000.03-attr.string=C\:\\Users\\Norbi\\* +06-child.00000.06-child.00000.03-attr.type=default +06-child.00001.00-name=Drives +06-child.00001.01-type=Filter +06-child.00001.03-attr.default=false +06-child.00001.03-attr.filterType=default +06-child.00001.03-attr.id=Drives +06-child.00001.03-attr.nonChangable=false +06-child.00001.03-attr.nonDeletable=false +06-child.00001.03-attr.nonRenamable=false +06-child.00001.03-attr.promptable=false +06-child.00001.03-attr.relativeOrder=0 +06-child.00001.03-attr.release=200 +06-child.00001.03-attr.singleFilterStringOnly=false +06-child.00001.03-attr.stringsCaseSensitive=false +06-child.00001.03-attr.stringsNonChangable=false +06-child.00001.03-attr.supportsDuplicateFilterStrings=false +06-child.00001.03-attr.supportsNestedFilters=true +06-child.00001.06-child.00000.00-name=* +06-child.00001.06-child.00000.01-type=FilterString +06-child.00001.06-child.00000.03-attr.default=false +06-child.00001.06-child.00000.03-attr.string=* +06-child.00001.06-child.00000.03-attr.type=default diff --git a/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.norbi-pc_251/H.local_16/node.properties b/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.norbi-pc_251/H.local_16/node.properties new file mode 100644 index 0000000..128cdf7 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.norbi-pc_251/H.local_16/node.properties @@ -0,0 +1,25 @@ +# RSE DOM Node +00-name=Local +01-type=Host +03-attr.description= +03-attr.hostname=LOCALHOST +03-attr.offline=false +03-attr.promptable=false +03-attr.systemType=org.eclipse.rse.systemtype.local +03-attr.type=Local +06-child.00000.00-name=Local Connector Service +06-child.00000.01-type=ConnectorService +06-child.00000.03-attr.group=Local Connector Service +06-child.00000.03-attr.port=0 +06-child.00000.03-attr.useSSL=false +06-child.00000.06-child.00000.00-name=Local Files +06-child.00000.06-child.00000.01-type=SubSystem +06-child.00000.06-child.00000.03-attr.hidden=false +06-child.00000.06-child.00000.03-attr.type=local.files +06-child.00000.06-child.00000.06-child.00000.00-name=NORBI-PC___NORBI-PC\:local.files +06-child.00000.06-child.00000.06-child.00000.01-type=FilterPoolReference +06-child.00000.06-child.00000.06-child.00000.03-attr.refID=local.files +06-child.00000.06-child.00001.00-name=Local Shells +06-child.00000.06-child.00001.01-type=SubSystem +06-child.00000.06-child.00001.03-attr.hidden=false +06-child.00000.06-child.00001.03-attr.type=local.shells diff --git a/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.norbi-pc_251/node.properties b/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.norbi-pc_251/node.properties new file mode 100644 index 0000000..910091b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.rse.core/profiles/PRF.norbi-pc_251/node.properties @@ -0,0 +1,7 @@ +# RSE DOM Node +00-name=NORBI-PC +01-type=Profile +03-attr.defaultPrivate=true +03-attr.isActive=true +05-ref.00000=FP.local.files_0 +05-ref.00001=H.local_16 diff --git a/.metadata/.plugins/org.eclipse.rse.ui/.log b/.metadata/.plugins/org.eclipse.rse.ui/.log new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.search/dialog_settings.xml b/.metadata/.plugins/org.eclipse.search/dialog_settings.xml new file mode 100644 index 0000000..c0a135f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.search/dialog_settings.xml @@ -0,0 +1,48 @@ + +
+
+ + +
+
+ +
+
+ + +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
+
+ + +
+
+ + + + + +
+
diff --git a/.metadata/.plugins/org.eclipse.team.cvs.core/.running b/.metadata/.plugins/org.eclipse.team.cvs.core/.running new file mode 100644 index 0000000..e69de29 diff --git a/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml new file mode 100644 index 0000000..50f1edb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.editors/dialog_settings.xml @@ -0,0 +1,5 @@ + +
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml new file mode 100644 index 0000000..c458f04 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml @@ -0,0 +1,16 @@ + +
+
+ + +
+
+ + + +
+
+ + +
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml new file mode 100644 index 0000000..4927d2f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml @@ -0,0 +1,36 @@ + +
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml new file mode 100644 index 0000000..f8d2a7b --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml @@ -0,0 +1,45 @@ + +
+
+ + +
+
+ + + + + + + + + + +
+
+
+
+ + + + + +
+
+ + + + +
+
+ + + + + + + + + +
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml new file mode 100644 index 0000000..7f91f53 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.wst.internet.cache/cache.xml b/.metadata/.plugins/org.eclipse.wst.internet.cache/cache.xml new file mode 100644 index 0000000..6574033 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.internet.cache/cache.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/externalLibsTimeStamps b/.metadata/.plugins/org.eclipse.wst.jsdt.core/externalLibsTimeStamps new file mode 100644 index 0000000..752fe12 Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wst.jsdt.core/externalLibsTimeStamps differ diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/baseBrowserLibrary.js b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/baseBrowserLibrary.js new file mode 100644 index 0000000..2fc99ea --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/baseBrowserLibrary.js @@ -0,0 +1,5393 @@ +/******************************************************************************* + * Copyright (c) 2008, 2013 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ + +/** + * Object DOMException() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Object + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Object + */ +function DOMException(){}; +DOMException.prototype = new Object(); +/** + * Constant DOMException.INDEX_SIZE_ERR=1 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.INDEX_SIZE_ERR=1; +/** + * Constant DOMException.DOMSTRING_SIZE_ERR=2 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.DOMSTRING_SIZE_ERR=2; +/** + * Constant DOMException.HIERARCHY_REQUEST_ERR=3 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.HIERARCHY_REQUEST_ERR=3; +/** + * Constant DOMException.WRONG_DOCUMENT_ERR=4 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.WRONG_DOCUMENT_ERR=4; +/** + * Constant DOMException.INVALID_CHARACTER_ERR=5 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.INVALID_CHARACTER_ERR=5; +/** + * Constant DOMException.NO_DATA_ALLOWED_ER=6 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.NO_DATA_ALLOWED_ER=6; +/** + * Constant DOMException.NO_MODIFICATION_ALLOWED_ERR=7 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.NO_MODIFICATION_ALLOWED_ERR=7; +/** + * Constant DOMException.NOT_FOUND_ERR=8 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.NOT_FOUND_ERR=8; +/** + * Constant DOMException.NOT_SUPPORTED_ERR=9 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.NOT_SUPPORTED_ERR=9; +/** + * Constant DOMException.INUSE_ATTRIBUTE_ERR=10 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.INUSE_ATTRIBUTE_ERR=10; +/** + * Constant DOMException.INVALID_STATE_ERR=11 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.INVALID_STATE_ERR=11; +/** + * Constant DOMException.SYNTAX_ERR=12 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.SYNTAX_ERR=12; +/** + * Constant DOMException.INVALID_MODIFICATION_ER=13 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.INVALID_MODIFICATION_ER=13; +/** + * Constant DOMException.NAMESPACE_ERR=14 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.NAMESPACE_ERR=14; +/** + * Constant DOMException.NVALID_ACCESS_ERR=15 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.INVALID_ACCESS_ERR=15; +/** + * Property code + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMException.prototype.code=0; + +/** + * Object DOMImplementation() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Object + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Object + */ +function DOMImplementation(){}; +DOMImplementation.prototype = new Object(); +/** + * function hasFeature(feature, version) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} feature + * @param {String} version + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DOMImplementation.prototype.hasFeature = function(feature, version){return false;}; +/** + * function createDocumentType(qualifiedName, publicId, systemId) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} qualifiedName + * @param {String} publicId + * @param {String} systemId + * @returns {DocumentType} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see DocumentType + */ +DOMImplementation.prototype.createDocumentType = function(qualifiedName, publicId, systemId){return new DocumentType();}; +/** + * function createDocument(namespaceURI, qualifiedName, doctype) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} qualifiedName + * @param {DocumentType} doctype + * @returns {Document} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Document + */ +DOMImplementation.prototype.createDocument = function(namespaceURI, qualifiedName, doctype){return new HTMLDocument();}; + +/** + * Object DocumentFragment() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function DocumentFragment(){}; +DocumentFragment.prototype=new Node(); + +/** + * Object Document() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function Document(){}; +Document.prototype = new Node(); +/** + * Property defaultView + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Window + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Window + */ +Document.prototype.defaultView = new Window(); +/** + * Property doctype + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type DocumentType + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see DocumentType + */ +Document.prototype.doctype = new DocumentType(); +/** + * Property implementation + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type DOMImplementation + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see DOMImplementation + */ +Document.prototype.implementation = new DOMImplementation(); +/** + * Property documentElement + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Element + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Element + */ +Document.prototype.documentElement= new HTMLElement(); +/** + * Property styleSheets + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Document.prototype.styleSheets= new Array(); +/** + * function createElement(tagName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} tagName + * @returns {Element} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Element + */ +Document.prototype.createElement=function(tagName){return new HTMLElement();}; +/** + * function createDocumentFragment() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @returns {DocumentFragment} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see DocumentFragment + */ +Document.prototype.createDocumentFragment=function(){return new DocumentFragment();}; +/** + * function createTextNode(data) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} data + * @returns {Text} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Text + */ +Document.prototype.createTextNode=function(data){return new Text();}; +/** + * function createComment(data) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} data + * @returns {Comment} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Comment + */ +Document.prototype.createComment=function(data){return new Comment();}; +/** + * function createCDATASection(data) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} data + * @returns {CDATASection} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see CDATASection + */ +Document.prototype.createCDATASection=function(data){}; +/** + * function createProcessingInstruction(target, data) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type ProcessingInstruction + * @param {String} target + * @param {String} data + * @returns {ProcessingInstruction} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see ProcessingInstruction +*/ +Document.prototype.createProcessingInstruction=function(target, data){return new ProcessingInstruction();}; +/** + * function createAttribute(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {Attr} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Attr + */ +Document.prototype.createAttribute=function(name){return new Attr();}; +/** + * function createEntityReference(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {EntityReference} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see EntityReference + */ +Document.prototype.createEntityReference=function(name){return new EntityReference();}; +/** + * function getElementsByTagName(tagname) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} tagname + * @returns {NodeList} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see NodeList + */ +Document.prototype.getElementsByTagName=function(tagname){return new NodeList();}; +/** + * function importNode(importedNode, deep) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Node} importedNode + * @param {Boolean} deep + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Document.prototype.importNode=function(importedNode, deep){return new Node();}; +/** + * function createElementNS(namespaceURI, qualifiedName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} qualifiedName + * @returns {Element} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Element + */ +Document.prototype.createElementNS=function(namespaceURI, qualifiedName){return new HTMLElement();}; +/** + * function createEvent(String eventType) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} eventType + * @returns {Object} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Element + */ +Document.prototype.createEvent=function(eventType){return new Object();}; +/** + * function createAttributeNS(namespaceURI, qualifiedName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} qualifiedName + * @returns {Attr} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Attr + */ +Document.prototype.createAttributeNS=function(namespaceURI, qualifiedName){return new Attr();}; +/** + * function getElementsByTagNameNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @returns {NodeList} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see NodeList + */ +Document.prototype.getElementsByTagNameNS=function(namespaceURI, localName){return new NodeList();}; +/** + * function getElementById(elementId) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} elementId + * @returns {Element} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Element + */ +Document.prototype.getElementById=function(elementId){return new HTMLElement();}; + +/** + * Object Node() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Object + * @constructor + * @memberOf Node + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see EventTarget + */ +function Node(){}; +Node.prototype=new EventTarget(); +/** + * Constant Node.ELEMENT_NODE=1 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.ELEMENT_NODE=1; +/** + * Constant Node.ATTRIBUTE_NODE=2 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.ATTRIBUTE_NODE=2; +/** + * Constant Node.TEXT_NODE=3 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.TEXT_NODE=3; +/** + * Constant Node.CDATA_SECTION_NODE=4 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.CDATA_SECTION_NODE=4; +/** + * Constant Node.ENTITY_REFERENCE_NODE=5 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.ENTITY_REFERENCE_NODE=5; +/** + * Constant Node.ENTITY_NODE=6 + * @type Number + * @memberOf Node + * @see Node + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html +*/ +Node.ENTITY_NODE=6; +/** + * Constant Node.PROCESSING_INSTRUCTION_NODE=7 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.PROCESSING_INSTRUCTION_NODE=7; +/** + * Constant Node.COMMENT_NODE=8 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.COMMENT_NODE=8; +/** + * Constant Node.DOCUMENT_NODE=9 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.DOCUMENT_NODE=9; +/** + * Constant Node.DOCUMENT_TYPE_NODE=10 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.DOCUMENT_TYPE_NODE=10; +/** + * Constant Node.DOCUMENT_FRAGMENT_NODE=11 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.DOCUMENT_FRAGMENT_NODE=11; +/** + * Constant Node.NOTATION_NODE=12 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @constant + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.NOTATION_NODE=12; +/** + * Property nodeName + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.nodeName = ""; +/** + * Property nodeValue + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.nodeValue = ""; +/** + * Property nodeType + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.nodeType = 0; +/** + * Property parentNode + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Node + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.parentNode=new Node(); +/** + * Property childNodes + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type NodeList + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see NodeList +*/ +Node.prototype.childNodes=new NodeList(); +/** + * Property firstChild + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Node + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.firstChild=new Node(); +/** + * Property lastChild + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Node + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.lastChild=new Node(); +/** + * Property previousSibling + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Node + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.previousSibling=new Node(); +/** + * Property nextSibling + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Node + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.nextSibling=new Node(); +/** + * Property attributes + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type NamedNodeMap + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see NamedNodeMap + */ +Node.prototype.attributes=new NamedNodeMap(); +/** + * Property ownerDocument + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Document + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Document + */ +Node.prototype.ownerDocument = new HTMLDocument(); +/** + * Property namespaceURI + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.namespaceURI=""; +/** + * Property prefix + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.prefix = ""; +/** + * Property localName + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.localName= ""; +/** + * function insertBefore(newChild, refChild) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Node} newChild + * @param {Node} refChild + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.insertBefore = function(newChild, refChild){return new Node();}; +/** + * function replaceChild(newChild, oldChild) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Node} newChild + * @param {Node} oldChild + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.replaceChild = function(newChild, oldChild){return new Node();}; +/** + * function removeChild(oldChild) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Node} oldChild + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.removeChild = function(oldChild){return new Node();}; +/** + * function appendChild(newChild) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Node} newChild + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.appendChild = function(newChild){return new Node();}; +/** + * function hasChildNodes() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.hasChildNodes=function(){return false;}; +/** + * function cloneNode(deep) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Boolean} deep + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +Node.prototype.cloneNode=function(deep){return new Node();}; +/** + * function normalize() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.normalize = function(){}; +/** + * function isSupported(feature, version) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} feature + * @param {String} version + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.isSupported=function(feature, version){return false;}; +/** + * function hasAttributes() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Node.prototype.hasAttributes=function(){return false;}; + +/** + * Object NodeList() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Object + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Object + */ +function NodeList(){}; +NodeList.prototype = new Object(); +/** + * Property length + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +NodeList.prototype.length=0; +/** + * function item(index) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * Note: This object can also be dereferenced using square bracket notation (e.g. obj[1]). Dereferencing with an integer index is equivalent to invoking the item method with that index + * + * @param {Number} index + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node +*/ +NodeList.prototype.item = function(index){return new Node();}; + +/** + * Object NamedNodeMap() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Object + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Object + */ +function NamedNodeMap(){}; +NamedNodeMap.prototype = new Object(); +/** + * Property length + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +NamedNodeMap.prototype.length=0; +/** + * function getNamedItem(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +NamedNodeMap.prototype.getNamedItem=function(name){return new Node();}; +/** + * function setNamedItem(arg) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Node} arg + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +NamedNodeMap.prototype.setNamedItem=function(arg){return new Node();}; +/** + * function removeNamedItem(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +NamedNodeMap.prototype.removeNamedItem=function(name){return new Node();}; +/** + * function item(index) + * Note: This object can also be dereferenced using square bracket notation (e.g. obj[1]). Dereferencing with an integer index is equivalent to invoking the item method with that index. + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Number} index + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +NamedNodeMap.prototype.item=function(index){return new Node();}; +/** + * function getNamedItemNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +NamedNodeMap.prototype.getNamedItemNS=function(namespaceURI, localName){return new Node();}; +/** + * function setNamedItemNS(arg) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Node} arg + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +NamedNodeMap.prototype.setNamedItemNS=function(arg){return new Node();}; +/** + * function removeNamedItemNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @returns {Node} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +NamedNodeMap.prototype.removeNamedItemNS=function(namespaceURI, localName){return new Node();}; + +/** + * Object CharacterData() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function CharacterData(){}; +CharacterData.prototype=new Node(); +/** + * Property data + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +CharacterData.prototype.data=""; +/** + * Property length + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +CharacterData.prototype.length=0; +/** + * function substringData(offset, count) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Number} offset + * @param {Number} count + * @returns {String} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +CharacterData.prototype.substringData=function(offset, count){return "";}; +/** + * function appendData(arg) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} arg + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +CharacterData.prototype.appendData=function(arg){}; +/** + * function insertData(offset, arg) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Number} offset + * @param {String} arg + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +CharacterData.prototype.insertData=function(offset, arg){}; +/** + * function deleteData(offset, count) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Number} offset + * @param {Number} count + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +CharacterData.prototype.deleteData=function(offset, count){}; +/** + * function replaceData(offset, count, arg) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Number} offset + * @param {Number} count + * @param {String} arg + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +CharacterData.prototype.replaceData=function(offset, count, arg){}; + +/** + * Object Attr() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function Attr(){}; +Attr.prototype = new Node(); +/** + * Property name + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Attr.prototype.name = ""; +/** + * Property specified + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Attr.prototype.specified = false; +/** + * Property value + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Attr.prototype.value = ""; +/** + * Property ownerElement + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type Element + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Element + */ +Attr.prototype.ownerElement = new Element(); + +/** + * Object Element() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function Element(){}; +Element.prototype=new Node(); +/** + * Property tagName + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.tagName=""; +/** + * function addEventListener(Stirng type, Function listener, Boolean useCapture) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} type + * @param {Function} listener + * @param {Boolean} useCapture + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.addEventListener=function(type, listener, useCapture){}; +/** + * function attachEvent(String type, Function listener) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} type + * @param {Function} listener + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.attachEvent=function(type, listener){}; +/** + * function detachEvent(String type, Function listener) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} type + * @param {Function} listener + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.detachEvent=function(type, listener){}; +/** + * function dispatchEvent(Object event) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Object} event + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.dispatchEvent=function(event){return false;}; +/** + * function getAttribute(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.getAttribute=function(name){return "";}; +/** + * function setAttribute(name, value) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @param {String} value + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.setAttribute=function(name, value){}; +/** + * function removeAttribute(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.removeAttribute=function(name){}; +/** + * function getAttributeNode(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {Attr} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.getAttributeNode=function(name){return new Attr();}; +/** + * function setAttributeNode(newAttr) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Attr} newAttr + * @returns {Attr} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.setAttributeNode=function(newAttr){return new Attr();}; +/** + * function removeAttributeNode(oldAttr) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Attr} oldAttr + * @returns {Attr} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.removeAttributeNode=function(oldAttr){return new Attr();}; +/** + * function getElementsByTagName(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {NodeList} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.getElementsByTagName=function(name){return new NodeList();}; +/** + * function getAttributeNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @returns {String} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.getAttributeNS=function(namespaceURI, localName){return "";}; +/** + * function setAttributeNS(namespaceURI, qualifiedName, value) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} qualifiedName + * @param {String} value + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.setAttributeNS=function(namespaceURI, qualifiedName, value){}; +/** + * function removeAttributeNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.removeAttributeNS=function(namespaceURI, localName){}; +/** + * function getAttributeNodeNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @returns {Attr} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.getAttributeNodeNS=function(namespaceURI, localName){return new Attr();}; +/** + * function setAttributeNodeNS(newAttr) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Attr} newAttr + * @returns {Attr} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.setAttributeNodeNS=function(newAttr){return new Attr();}; +/** + * function getElementsByTagNameNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @returns {NodeList} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.getElementsByTagNameNS=function(namespaceURI, localName){return new NodeList();}; +/** + * function hasAttribute(name) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} name + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.hasAttribute=function(name){return false;}; +/** + * function hasAttributeNS(namespaceURI, localName) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {String} namespaceURI + * @param {String} localName + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Element.prototype.hasAttributeNS=function(namespaceURI, localName){return false;}; + +/** + * Object Text() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments CharacterData + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see CharacterData + */ +function Text(){}; +Text.prototype = new CharacterData(); +/** + * function splitText(offset) + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @param {Number} offset + * @returns {Text} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Text + */ +Text.prototype.splitText = function(offset) {return new Text();}; + +/** + * Object Comment() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments CharacterData + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see CharacterData + */ +function Comment(){}; +Comment.prototype = new CharacterData(); + +/** + * Object CDATASection() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Text + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Text + */ +function CDATASection(){}; +CDATASection.prototype = new Text(); + +/** + * Object DocumentType() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function DocumentType(){}; +DocumentType.prototype = new Node(); +/** + * Property name + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DocumentType.prototype.name=""; +/** + * Property entities + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type NamedNodeMap + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DocumentType.prototype.entities = new NamedNodeMap(); +/** + * Property notations + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type NamedNodeMap + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DocumentType.prototype.notations=new NamedNodeMap(); +/** + * Property publicId + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DocumentType.prototype.publicId=""; +/** + * Property systemId + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DocumentType.prototype.systemId=""; +/** + * Property internalSubset + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +DocumentType.prototype.internalSubset=""; + +/** + * Object Notation() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function Notation(){}; +Notation.prototype=new Node(); +/** + * Property publicId + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Notation.prototype.publicId=""; +/** + * Property systemId + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Notation.prototype.systemId=""; + +/** + * Object Entity() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function Entity(){}; +Entity.prototype=new Node(); +/** + * Property publicId + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Entity.prototype.publicId=""; +/** + * Property systemId + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Entity.prototype.systemId=""; +/** + * Property notationName + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Entity.prototype.notationName=""; + +/** + * Object EntityReference() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function EntityReference(){}; +EntityReference.prototype=new Node(); + +/** + * Object ProcessingInstruction() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @augments Node + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + * @see Node + */ +function ProcessingInstruction(){}; +ProcessingInstruction.prototype=new Node(); +/** + * Property target + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +ProcessingInstruction.prototype.target=""; +/** + * Property target + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html + * + * @type String + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +ProcessingInstruction.prototype.data=""; + + +/*HTML DOM Below this line*/ + +/** + * Object HTMLCollection() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments Object + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +function HTMLCollection(){}; +HTMLCollection.prototype = new Object(); +/** + * Property length + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLCollection.prototype.length=0; +/** + * function item(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLCollection.prototype.item = function(index){return new Node();}; +/** + * function namedItem(name) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {String} name + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLCollection.prototype.namedItem = function(index){return new Node();}; + +/** + * Object HTMLOptionsCollection() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments Object + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +function HTMLOptionsCollection(){}; +HTMLOptionsCollection.prototype = new Object(); +/** + * Property length + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionsCollection.prototype.length=0; +/** + * function item(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionsCollection.prototype.item = function(index){return new Node();}; +/** + * function namedItem(name) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {String} name + * @returns {Node} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionsCollection.prototype.namedItem = function(index){return new Node();}; + +/** + * Object HTMLDocument() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments Document + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see Document + */ +function HTMLDocument(){}; +HTMLDocument.prototype = new Document(); +/** + * Property title + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.title=""; +/** + * Property referrer + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.referrer=""; +/** + * Property domain + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.domain=""; +/** + * Property URL + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.URL=""; +/** + * Property body + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.body=new HTMLElement(); +/** + * Property images + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.images=new HTMLCollection(); +/** + * Property applets + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.applets=new HTMLCollection(); +/** + * Property links + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.links=new HTMLCollection(); +/** + * Property forms + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.forms=new HTMLCollection(); +/** + * Property anchors + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.anchors=new HTMLCollection(); +/** + * Property cookie + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.cookie=""; +/** + * Property lastModified + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.lastModified=""; +/** + * function open() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.open = function(){}; +/** + * function close() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.close = function(){}; +/** + * function write(text) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {String} text + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.write = function(text){}; +/** + * function writeln(text) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {String} text + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.writeln = function(text){}; +/** + * function getElementsByName(elementName) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {String} elementName + * @returns {NodeList} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDocument.prototype.getElementsByName = function(elementName){return new NodeList();}; + +/** + * Object HTMLElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments Element + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see Element + */ +function HTMLElement(){}; +HTMLElement.prototype = new Element(); +/** + * Property id + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLElement.prototype.id=""; +/** + * Property title + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLElement.prototype.title=""; +/** + * Property lang + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLElement.prototype.lang=""; +/** + * Property dir + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLElement.prototype.dir=""; +/** + * Property className + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLElement.prototype.className=""; +/** + * Property innerHTML + * + * @type String + */ +HTMLElement.prototype.innerHTML=""; +/** + * Property offsetHeight + * + * @type Number + */ +HTMLElement.prototype.offsetHeight=0; +/** + * Property offsetWidth + * + * @type Number + */ +HTMLElement.prototype.offsetWidth=0; +/** + * Property offsetLeft + * + * @type Number + */ +HTMLElement.prototype.offsetLeft=0; +/** + * Property offsetTop + * + * @type Number + */ +HTMLElement.prototype.offsetTop=0; +/** + * Property offsetParent + * + * @type HTMLElement + */ +HTMLElement.prototype.offsetParent = new HTMLElement(); +/** + * Property scrollHeight + * + * @type Number + */ +HTMLElement.prototype.scrollHeight=0; +/** + * Property scrollWidth + * + * @type Number + */ +HTMLElement.prototype.scrollWidth=0; +/** + * Property scrollLeft + * + * @type Number + */ +HTMLElement.prototype.scrollLeft=0; +/** + * Property scrollTop + * + * @type Number + */ +HTMLElement.prototype.scrollTop=0; +/** + * Property style + * + * @type CSS2Properties + */ +HTMLElement.prototype.style = new CSS2Properties(); + +/** + * Object HTMLHtmlElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLHtmlElement(){}; +HTMLHtmlElement.prototype = new HTMLElement(); +/** + * Property version + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLHtmlElement.prototype.version=""; + +/** + * Object HTMLHeadElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLHeadElement(){}; +HTMLHeadElement.prototype = new HTMLElement(); +/** + * Property profile + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLHeadElement.prototype.profile=""; + +/** + * Object HTMLLinkElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLLinkElement(){}; +HTMLLinkElement.prototype = new HTMLElement(); +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.disabled=false; +/** + * Property charset + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.charset=""; +/** + * Property href + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.href=""; +/** + * Property hreflang + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.hreflang=""; +/** + * Property media + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.media=""; +/** + * Property rel + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.rel=""; +/** + * Property rev + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.rev=""; +/** + * Property target + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.target=""; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLinkElement.prototype.type=""; + +/** + * Object HTMLTitleElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTitleElement(){}; +HTMLTitleElement.prototype = new HTMLElement(); +/** + * Property text + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTitleElement.prototype.text=""; + +/** + * Object HTMLMetaElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLMetaElement(){}; +HTMLMetaElement.prototype = new HTMLElement(); +/** + * Property content + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLMetaElement.prototype.content=""; +/** + * Property httpEquiv + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLMetaElement.prototype.httpEquiv=""; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLMetaElement.prototype.name=""; +/** + * Property scheme + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLMetaElement.prototype.scheme=""; + +/** + * Object HTMLBaseElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLBaseElement(){}; +HTMLBaseElement.prototype = new HTMLElement(); +/** + * Property href + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBaseElement.prototype.href=""; +/** + * Property target + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBaseElement.prototype.target=""; + +/** + * Object HTMLIsIndexElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLIsIndexElement(){}; +HTMLIsIndexElement.prototype = new HTMLElement(); +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIsIndexElement.prototype.form=new HTMLFormElement(); +/** + * Property prompt + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIsIndexElement.prototype.prompt=""; + +/** + * Object HTMLStyleElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLStyleElement(){}; +HTMLStyleElement.prototype = new HTMLElement(); +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLStyleElement.prototype.disabled=false; +/** + * Property media + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLStyleElement.prototype.media=""; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLStyleElement.prototype.type=""; + +/** + * Object HTMLBodyElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLBodyElement(){}; +HTMLBodyElement.prototype = new HTMLElement(); +/** + * Property aLink + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBodyElement.prototype.aLink=""; +/** + * Property background + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBodyElement.prototype.background=""; +/** + * Property bgColor + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBodyElement.prototype.bgColor=""; +/** + * Property link + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBodyElement.prototype.link=""; +/** + * Property text + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBodyElement.prototype.text=""; +/** + * Property vLink + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBodyElement.prototype.vLink=""; + +/** + * Object HTMLFormElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLFormElement(){}; +HTMLFormElement.prototype = new HTMLElement(); +/** + * Property elements + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.elements=new HTMLCollection(); +/** + * Property length + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.length=0; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.name=""; +/** + * Property acceptCharset + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.acceptCharset=""; +/** + * Property action + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.action=""; +/** + * Property enctype + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.enctype=""; +/** + * Property method + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.method=""; +/** + * Property target + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.target=""; +/** + * function submit() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.submit = function(){}; +/** + * function reset() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFormElement.prototype.reset = function(){}; + +/** + * Object HTMLSelectElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLSelectElement(){}; +HTMLSelectElement.prototype = new HTMLElement(); +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.type=""; +/** + * Property selectedIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.selectedIndex=0; +/** + * Property value + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.value=""; +/** + * Property length + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.length=0; +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.form = new HTMLFormElement(); +/** + * Property options + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLOptionsCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.options= new HTMLOptionsCollection(); +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.disabled=false; +/** + * Property multiple + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.multiple=false; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.name=""; +/** + * Property size + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.size=0; +/** + * Property tabIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.tabIndex=0; +/** + * function add(element, before) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {HTMLElement} element + * @param {HTMLElement} before + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.add = function(element, before){}; +/** + * function remove(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.remove = function(index){}; +/** + * function blur() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.blur = function(){}; +/** + * function focus() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLSelectElement.prototype.focus = function(){}; + +/** + * Object HTMLOptGroupElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLOptGroupElement(){}; +HTMLOptGroupElement.prototype = new HTMLElement(); +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptGroupElement.prototype.disabled=false; +/** + * Property label + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptGroupElement.prototype.label=""; + +/** + * Object Option() + * @constructor + * @param {String} text + * @param {String} value + * @param {Boolean} defaultSelected + * @param {Boolean} selected + */ +function Option(text, value, defaultSelected, selected){}; +Option.prototype = new HTMLOptionElement(); +/** + * Object HTMLOptionElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLOptionElement(){}; +HTMLOptionElement.prototype = new HTMLElement(); +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.form = new HTMLFormElement(); +/** + * Property defaultSelected + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.defaultSelected=false; +/** + * Property text + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.text=""; +/** + * Property index + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.index=0; +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.disabled=false; +/** + * Property label + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.label=""; +/** + * Property selected + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.selected=false; +/** + * Property value + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOptionElement.prototype.value=""; + +/** + * Object HTMLInputElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLInputElement(){}; +HTMLInputElement.prototype = new HTMLElement(); +/** + * Property defaultValue + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.defaultValue=""; +/** + * Property defaultChecked + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.defaultChecked=false; +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.form = new HTMLFormElement(); +/** + * Property accept + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.accept=""; +/** + * Property accessKey + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.accessKey=""; +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.align=""; +/** + * Property alt + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.alt=""; +/** + * Property checked + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.checked=false; +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.disabled=false; +/** + * Property masLength + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.maxLenght=0; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.name=""; +/** + * Property readOnly + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.readOnly=false; +/** + * Property size + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.size=0; +/** + * Property src + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.src=""; +/** + * Property tabIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.tabIndex=0; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.type=""; +/** + * Property useMap + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.useMap=""; +/** + * Property value + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.value=""; +/** + * function blur() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.blur = function(){}; +/** + * function focus() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.focus = function(){}; +/** + * function select() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.select = function(){}; +/** + * function click() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLInputElement.prototype.click = function(){}; + +/** + * Object HTMLTextAreaElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTextAreaElement(){}; +HTMLTextAreaElement.prototype = new HTMLElement(); +/** + * Property defaultValue + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.defaultValue=""; +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.form= new HTMLFormElement(); +/** + * Property accessKey + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.accessKey=""; +/** + * Property cols + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.cols=0; +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.disabled=false; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.name=""; +/** + * Property readOnly + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.readOnly=false; +/** + * Property rows + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.rows=0; +/** + * Property tabIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.tabIndex=0; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.type=""; +/** + * Property value + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.value=""; +/** + * function blur() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.blur = function(){}; +/** + * function focus() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.focus = function(){}; +/** + * function select() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTextAreaElement.prototype.select = function(){}; + +/** + * Object HTMLButtonElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLButtonElement(){}; +HTMLButtonElement.prototype = new HTMLElement(); +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLButtonElement.prototype.form = new HTMLFormElement(); +/** + * Property accessKey + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLButtonElement.prototype.accessKey = ""; +/** + * Property disabled + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLButtonElement.prototype.disabled=false; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLButtonElement.prototype.name=""; +/** + * Property tabIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLButtonElement.prototype.tabIndex=0; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLButtonElement.prototype.type=""; +/** + * Property value + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLButtonElement.prototype.value=""; + +/** + * Object HTMLLabelElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLLabelElement(){}; +HTMLLabelElement.prototype = new HTMLElement(); +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLabelElement.prototype.form = new HTMLFormElement(); +/** + * Property accessKey + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLabelElement.prototype.accessKey=""; +/** + * Property htmlFor + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLabelElement.prototype.htmlFor=""; + +/** + * Object HTMLFieldSetElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLFieldSetElement(){}; +HTMLFieldSetElement.prototype = new HTMLElement(); +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFieldSetElement.prototype.form = new HTMLFormElement(); + +/** + * Object HTMLLegendElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLLegendElement(){}; +HTMLLegendElement.prototype = new HTMLElement(); +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLegendElement.prototype.form = new HTMLFormElement(); +/** + * Property accessKey + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLegendElement.prototype.accessKey=""; +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLegendElement.prototype.align=""; + +/** + * Object HTMLUListElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLUListElement(){}; +HTMLUListElement.prototype = new HTMLElement(); +/** + * Property compact + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLUListElement.prototype.compact=false; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLUListElement.prototype.type=""; + +/** + * Object HTMLOListElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLOListElement(){}; +HTMLOListElement.prototype = new HTMLElement(); +/** + * Property compact + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOListElement.prototype.compact=false; +/** + * Property start + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOListElement.prototype.start=0; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLOListElement.prototype.type=""; + +/** + * Object HTMLDListElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLDListElement(){}; +HTMLDListElement.prototype = new HTMLElement(); +/** + * Property compact + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDListElement.prototype.compact=false; + +/** + * Object HTMLDirectoryElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLDirectoryElement(){}; +HTMLDirectoryElement.prototype = new HTMLElement(); +/** + * Property compact + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDirectoryElement.prototype.compact=false; + +/** + * Object HTMLMenuElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLMenuElement(){}; +HTMLMenuElement.prototype = new HTMLElement(); +/** + * Property compact + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLMenuElement.prototype.compact=false; + +/** + * Object HTMLLIElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLLIElement(){}; +HTMLLIElement.prototype = new HTMLElement(); +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLIElement.prototype.type=""; +/** + * Property value + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLLIElement.prototype.value=0; + +/** + * Object HTMLDivElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLDivElement(){}; +HTMLDivElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLDivElement.prototype.align=""; + +/** + * Object HTMLParagraphElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLParagraphElement(){}; +HTMLParagraphElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLParagraphElement.prototype.align=""; + +/** + * Object HTMLHeadingElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLHeadingElement(){}; +HTMLHeadingElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLHeadingElement.prototype.align=""; + +/** + * Object HTMLQuoteElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLQuoteElement(){}; +HTMLQuoteElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLQuoteElement.prototype.align=""; + +/** + * Object HTMLPreElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLPreElement(){}; +HTMLPreElement.prototype = new HTMLElement(); +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLPreElement.prototype.width=0; + +/** + * Object HTMLBRElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLBRElement(){}; +HTMLBRElement.prototype = new HTMLElement(); +/** + * Property clear + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBRElement.prototype.clear=""; + +/** + * Object HTMLBaseFontElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLBaseFontElement(){}; +HTMLBaseFontElement.prototype = new HTMLElement(); +/** + * Property color + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBaseFontElement.prototype.color=""; +/** + * Property face + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBaseFontElement.prototype.face=""; +/** + * Property size + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLBaseFontElement.prototype.size=0; + +/** + * Object HTMLBaseFontElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLFontElement(){}; +HTMLFontElement.prototype = new HTMLElement(); +/** + * Property color + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFontElement.prototype.color=""; +/** + * Property face + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFontElement.prototype.face=""; +/** + * Property size + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFontElement.prototype.size=0; + +/** + * Object HTMLHRElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLHRElement(){}; +HTMLHRElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLHRElement.prototype.align=""; +/** + * Property noShade + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLHRElement.prototype.noShade=false; +/** + * Property size + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLHRElement.prototype.size=""; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLHRElement.prototype.width=""; + +/** + * Object HTMLModElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLModElement(){}; +HTMLModElement.prototype = new HTMLElement(); +/** + * Property cite + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLModElement.prototype.cite=""; +/** + * Property dateTime + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLModElement.prototype.dateTime=""; + +/** + * Object HTMLAnchorElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLAnchorElement(){}; +HTMLAnchorElement.prototype = new HTMLElement(); +/** + * Property accessKey + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.accessKey=""; +/** + * Property charset + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.charset=""; +/** + * Property coords + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.coords=""; +/** + * Property href + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.href=""; +/** + * Property hreflang + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.hreflang=""; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.name=""; +/** + * Property rel + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.rel=""; +/** + * Property rev + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.rev=""; +/** + * Property shape + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.shape=""; +/** + * Property tabIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.tabIndex=0; +/** + * Property target + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.target=""; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.type=""; +/** + * function blur() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.blur = function(){}; +/** + * function focus() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAnchorElement.prototype.focus = function(){}; + +/** + * Object Image() + * @constructor + * @param {Number} width + * @param {Number} height + */ +function Image(width, height){}; +Image.prototype = new HTMLImageElement(); +/** + * Object HTMLImageElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLImageElement(){}; +HTMLImageElement.prototype = new HTMLElement(); +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.name=""; +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.align=""; +/** + * Property alt + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.alt=""; +/** + * Property border + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.border=""; +/** + * Property height + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.height=0; +/** + * Property hspace + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.hspace=0; +/** + * Property isMap + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.isMap=false; +/** + * Property longDesc + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.longDesc=""; +/** + * Property src + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.src=""; +/** + * Property useMap + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.useMap=""; +/** + * Property vspace + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.vspace=0; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLImageElement.prototype.width=0; + +/** + * Object HTMLObjectElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLObjectElement(){}; +HTMLObjectElement.prototype = new HTMLElement(); +/** + * Property form + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLFormElement + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.form = new HTMLFormElement(); +/** + * Property code + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.code=""; +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.align=""; +/** + * Property archive + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.archive=""; +/** + * Property border + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.border=""; +/** + * Property codeBase + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.codeBase=""; +/** + * Property codeType + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.codeType=""; +/** + * Property data + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.data=""; +/** + * Property declare + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.declare=false; +/** + * Property height + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.height=""; +/** + * Property hspace + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.hspace=0; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.name=""; +/** + * Property standby + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.standby=""; +/** + * Property tabIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.tabIndex=0; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.type=""; +/** + * Property useMap + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.useMap=""; +/** + * Property vspace + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.vspace=0; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.width=""; +/** + * Property contentDocument + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Document + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLObjectElement.prototype.contentDocument= new HTMLDocument(); + +/** + * Object HTMLParamElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLParamElement(){}; +HTMLParamElement.prototype = new HTMLElement(); +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLParamElement.prototype.name=""; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLParamElement.prototype.type=""; +/** + * Property value + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLParamElement.prototype.value=""; +/** + * Property valueType + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLParamElement.prototype.valueType=""; + +/** + * Object HTMLAppletElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLAppletElement(){}; +HTMLAppletElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.align=""; +/** + * Property alt + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.alt=""; +/** + * Property archive + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.archive=""; +/** + * Property code + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.code=""; +/** + * Property codeBase + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.codeBase=""; +/** + * Property height + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.hight=""; +/** + * Property hspace + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.hspace=0; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.name=""; +/** + * Property object + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.object=""; +/** + * Property vspace + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.vspace=0; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAppletElement.prototype.width=""; + +/** + * Object HTMLMapElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLMapElement(){}; +HTMLMapElement.prototype = new HTMLElement(); +/** + * Property areas + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLMapElement.prototype.areas = new HTMLCollection(); +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLMapElement.prototype.name=""; + +/** + * Object HTMLAreaElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLAreaElement(){}; +HTMLAreaElement.prototype = new HTMLElement(); +/** + * Property accessKey + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.accessKey=""; +/** + * Property alt + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.alt=""; +/** + * Property coords + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.coords=""; +/** + * Property href + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.href=""; +/** + * Property noHref + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.noHref=false; +/** + * Property shape + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.shape=""; +/** + * Property tabIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.tabIndex=0; +/** + * Property target + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLAreaElement.prototype.target=""; + +/** + * Object HTMLScriptElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLScriptElement(){}; +HTMLScriptElement.prototype = new HTMLElement(); +/** + * Property text + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLScriptElement.prototype.text=""; +/** + * Property htmlFor + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLScriptElement.prototype.htmlFor=""; +/** + * Property event + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLScriptElement.prototype.event=""; +/** + * Property charset + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLScriptElement.prototype.charset=""; +/** + * Property defer + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLScriptElement.prototype.defer=""; +/** + * Property src + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLScriptElement.prototype.src=""; +/** + * Property type + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLScriptElement.prototype.type=""; + +/** + * Object HTMLTableElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTableElement(){}; +HTMLTableElement.prototype = new HTMLElement(); +/** + * Property caption + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLTableCaptionElement + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.caption = new HTMLTableCaptionElement(); +/** + * Property tHead + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLTableSectionElement + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.tHead = new HTMLTableSelectionElement(); +/** + * Property tFoot + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLTableSectionElement + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.tFoot = new HTMLTableSelectionElement(); +/** + * Property rows + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.rows = new HTMLCollection(); +/** + * Property tBodies + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.tBodies = new HTMLCollection(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.align=""; +/** + * Property bgColor + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.bgColor=""; +/** + * Property border + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.border=""; +/** + * Property cellPadding + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.cellPadding=""; +/** + * Property cellSpacing + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.cellSpacing=""; +/** + * Property frame + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.frame=""; +/** + * Property rules + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.rules=""; +/** + * Property summary + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.summary=""; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.width=""; +/** + * function createTHead(); + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @returns {HTMLElement} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.createTHead = function(){return new HTMLElement();}; +/** + * function deleteTHead(); + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.deleteTHead = function(){}; +/** + * function createTFoot(); + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @returns {HTMLElement} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.createTFoot = function(){return new HTMLElement();}; +/** + * function deleteTFoot(); + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.deleteTFoot = function(){}; +/** + * function createCaption(); + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @returns {HTMLElement} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.createCaption = function(){return new HTMLElement();}; +/** + * function deleteCaption(); + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.deleteCaption = function(){}; +/** + * function insertRow(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @returns {HTMLElement} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.insertRow = function(index){return new HTMLElement();}; +/** + * function deleteRow(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableElement.prototype.deleteRow = function(index){}; + +/** + * Object HTMLTableCaptionElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTableCaptionElement(){}; +HTMLTableCaptionElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCaptionElement.prototype.align=""; + +/** + * Object HTMLTableColElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTableColElement(){}; +HTMLTableColElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableColElement.prototype.align=""; +/** + * Property ch + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableColElement.prototype.ch=""; +/** + * Property chOff + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableColElement.prototype.chOff=""; +/** + * Property span + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableColElement.prototype.span=0; +/** + * Property vAlign + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableColElement.prototype.vAlign=""; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableColElement.prototype.width=""; + +/** + * Object HTMLTableSelectionElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTableSelectionElement(){}; +HTMLTableSelectionElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableSelectionElement.prototype.align=""; +/** + * Property ch + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableSelectionElement.prototype.ch=""; +/** + * Property chOff + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableSelectionElement.prototype.chOff=""; +/** + * Property vAlign + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableSelectionElement.prototype.vAlign=""; +/** + * Property rows + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableSelectionElement.prototype.rows=""; +/** + * function insertRow(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @returns {HTMLElement} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableSelectionElement.prototype.insertRow = function(index){return new HTMLElement();}; +/** + * function deleteRow(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableSelectionElement.prototype.deleteRow = function(index){}; + +/** + * Object HTMLTableRowElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTableRowElement(){}; +HTMLTableRowElement.prototype = new HTMLElement(); +/** + * Property rowIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.rowIndex=0; +/** + * Property sectionRowIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.sectionRowIndex=0; +/** + * Property cells + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type HTMLCollection + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.cells = new HTMLCollection(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.align=""; +/** + * Property bgColor + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.bgColor=""; +/** + * Property ch + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.ch=""; +/** + * Property chOff + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.chOff=""; +/** + * Property vAlign + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.vAlign=""; +/** + * function insertCell(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @returns {HTMLElement} + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.insertCell = function(index){return new HTMLElement();}; +/** + * function insertCell(index) + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @param {Number} index + * @throws DOMException + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableRowElement.prototype.deleteCell = function(index){}; + +/** + * Object HTMLTableRowElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLTableCellElement(){}; +HTMLTableCellElement.prototype = new HTMLElement(); +/** + * Property cellIndex + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.cellIndex=0; +/** + * Property abbr + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.abbr=""; +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.align=""; +/** + * Property axis + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.axis=""; +/** + * Property bgColor + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.bgColor=""; +/** + * Property ch + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.ch=""; +/** + * Property chOff + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.chOff=""; +/** + * Property colSpan + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.colSpan=0; +/** + * Property headers + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.headers=""; +/** + * Property height + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.height=""; +/** + * Property noWrap + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.noWrap=false; +/** + * Property rowSpan + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.rowSpan=0; +/** + * Property scope + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.scope=""; +/** + * Property vAlign + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.vAlign=""; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLTableCellElement.prototype.width=""; + +/** + * Object HTMLFrameSetElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLFrameSetElement(){}; +HTMLFrameSetElement.prototype = new HTMLElement(); +/** + * Property cols + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameSetElement.prototype.cols=""; +/** + * Property rows + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameSetElement.prototype.rows=""; + +/** + * Object HTMLFrameElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLFrameElement(){}; +HTMLFrameElement.prototype = new HTMLElement(); +/** + * Property frameBorder + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.frameBorder=""; +/** + * Property longDesc + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.longDesc=""; +/** + * Property marginHeight + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.marginHeight=""; +/** + * Property marginWidth + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.marginWidth=""; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.name=""; +/** + * Property noResize + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Boolean + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.noResize=false; +/** + * Property scrolling + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.scrolling=""; +/** + * Property src + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.src=""; +/** + * Property contentDocument + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Document + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLFrameElement.prototype.contentDocument= new HTMLDocument(); + +/** + * Object HTMLIFrameElement() + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @augments HTMLElement + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + * @see HTMLElement + */ +function HTMLIFrameElement(){}; +HTMLIFrameElement.prototype = new HTMLElement(); +/** + * Property align + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.align=""; +/** + * Property frameBorder + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.frameBorder=""; +/** + * Property height + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.height=""; +/** + * Property longDesc + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.longDesc=""; +/** + * Property marginHeight + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.marginHeight=""; +/** + * Property marginWidth + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.marginWidth=""; +/** + * Property name + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.name=""; +/** + * Property scrolling + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.scrolling=""; +/** + * Property src + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.src=""; +/** + * Property width + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.width=""; +/** + * Property contentDocument + * http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html + * + * @type Document + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model HTML Specification. + */ +HTMLIFrameElement.prototype.contentDocument= new HTMLDocument(); + +/* Stylesheets */ +/** + * Object CSS2Properties() + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/ecma-script-binding.html + * + * @augments Object + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Style Specification. + */ +function CSS2Properties(){}; +CSS2Properties.prototype = new Object(); \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/browserWindow.js b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/browserWindow.js new file mode 100644 index 0000000..cfbf452 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/browserWindow.js @@ -0,0 +1,618 @@ +/******************************************************************************* + * Copyright (c) 2008, 2013 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +function BarProp(){}; +BarProp.prototype = new Array(); + +/** + * Object Window() + * @super Global + * @constructor + * @since Common Usage, no standard +*/ +function Window(){}; +Window.prototype = new EventTarget(); +Window.prototype.self = new Window(); +Window.prototype.window = new Window(); +Window.prototype.frames = new Array(); +/** + * Property closed + * @type Boolean + * @memberOf Window + */ +Window.prototype.closed = new Boolean(); +/** + * Property defaultStatus + * @type String + * @memberOf Window + */ +Window.prototype.defaultStatus = ""; +/** + * Property document + * @type Document + * @memberOf Window + */ +Window.prototype.document= new HTMLDocument(); +/** + * Property history + * @type History + * @memberOf Window + */ +Window.prototype.history= new History(); +/** + * Property location + * @type Location + * @memberOf Window + */ +Window.prototype.location=new Location(); +/** + * Property name + * @type String + * @memberOf Window + */ +Window.prototype.name = ""; +/** + * Property navigator + * @type Navigator + * @memberOf Window + */ +Window.prototype.navigator = new Navigator(); +/** + * Property opener + * @type Window + * @memberOf Window + */ +Window.prototype.opener = new Window(); +/** + * Property outerWidth + * @type Number + * @memberOf Window + */ +Window.prototype.outerWidth = 0; +/** + * Property outerHeight + * @type Number + * @memberOf Window + */ +Window.prototype.outerHeight = 0; +/** + * Property pageXOffset + * @type Number + * @memberOf Window + */ +Window.prototype.pageXOffset = 0; +/** + * Property pageYOffset + * @type Number + * @memberOf Window + */ +Window.prototype.pageYOffset = 0; +/** + * Property parent + * @type Window + * @memberOf Window + */ +Window.prototype.parent = new Window(); +/** + * Property screen + * @type Screen + * @memberOf Window + */ +Window.prototype.screen = new Screen(); +/** + * Property status + * @type String + * @memberOf Window + */ +Window.prototype.status = ""; +/** + * Property top + * @type Window + * @memberOf Window + */ +Window.prototype.top = new Window(); + + +/* + * These properties may need to be moved into a browswer specific library. + */ + + /** + * Property innerWidth + * @type Number + * @memberOf Window + */ +Window.prototype.innerWidth = 0; +/** + * Property innerHeight + * @type Number + * @memberOf Window + */ +Window.prototype.innerHeight = 0; +/** + * Property screenX + * @type Number + * @memberOf Window + */ +Window.prototype.screenX = 0; +/** + * Property screenY + * @type Number + * @memberOf Window + */ +Window.prototype.screenY = 0; +/** + * Property screenLeft + * @type Number + * @memberOf Window + */ +Window.prototype.screenLeft = 0; +/** + * Property screenTop + * @type Number + * @memberOf Window + */ +Window.prototype.screenTop = 0; +//Window.prototype.event = new Event(); +Window.prototype.length = 0; +Window.prototype.scrollbars= new BarProp(); +Window.prototype.scrollX=0; +Window.prototype.scrollY=0; +Window.prototype.content= new Window(); +Window.prototype.menubar= new BarProp(); +Window.prototype.toolbar= new BarProp(); +Window.prototype.locationbar= new BarProp(); +Window.prototype.personalbar= new BarProp(); +Window.prototype.statusbar= new BarProp(); +Window.prototype.directories= new BarProp(); +Window.prototype.scrollMaxX=0; +Window.prototype.scrollMaxY=0; +Window.prototype.fullScreen=""; +Window.prototype.frameElement=""; +/* End properites */ + +/** + * function alert() + * @param {String} message + * @memberOf Window + */ +Window.prototype.alert = function(message){}; +/** + * function blur() + * @memberOf Window + */ +Window.prototype.blur = function(){}; +/** + * function clearInterval(intervalID) + * @param intervalID + * @memberOf Window + */ +Window.prototype.clearInterval = function(intervalID){}; +/** + * function clearTimeout(intervalID) + * @param intervalID + * @memberOf Window + */ +Window.prototype.clearTimeout = function(intervalID){}; +/** + * function close() + * @memberOf Window + */ +Window.prototype.close = function(){}; +/** + * function confirm() + * @param {String} arg + * @memberOf Window + * @returns {Boolean} + */ +Window.prototype.confirm = function(arg){return false;}; +/** + * function focus() + * @memberOf Window + */ +Window.prototype.focus = function(){}; +/** + * function getComputedStyle(element, pseudoElt ) + * @param {Element} element + * @param {String} pseudoElt + * @memberOf Window + * @returns {Object} + */ +Window.prototype.getComputedStyle = function(element,pseudoElt ){return new Object();}; +/** + * function moveTo(x, y) + * @param {Number} x + * @param {Number} y + * @memberOf Window + */ +Window.prototype.moveTo = function(x,y){}; +/** + * function moveBy(deltaX, deltaY) + * @param {Number} deltaX + * @param {Number} deltaY + * @memberOf Window + */ +Window.prototype.moveBy = function(deltaX,deltaY){}; +/** + * function open(optionalArg1, optionalArg2, optionalArg3, optionalArg4) + * @param {String} url + * @param {String} windowName + * @param {String} windowFeatures + * @param {Boolean} optionalArg4 + * @memberOf Window + * @returns {Window} + */ +Window.prototype.open = function(url, windowName, windowFeatures, optionalArg4){return new Window();}; +/** + * function print() + * @memberOf Window + */ +Window.prototype.print = function(){}; +/** + * function prompt(text, value) + * @param {String} text + * @param {String} value + * @memberOf Window + * @returns {String} + */ +Window.prototype.prompt = function(text, value){return "";}; +/** + * function resizeTo(newOuterWidth,newOuterHeight) + * @param {Number} newOuterWidth + * @param {Number} newOuterHeighr + * @memberOf Window + */ +Window.prototype.resizeTo=function(newOuterWidth,newOuterHeight){}; +/** + * function resizeBy(deltaX, deltaY) + * @param {Number} deltaX + * @param {Number} deltaY + * @memberOf Window + */ +Window.prototype.resizeBy=function(deltaX,deltaY){}; +/** + * function scrollTo(x,y) + * @param {Number} x + * @param {Number} y + * @memberOf Window + */ +Window.prototype.scrollTo=function(x,y){}; +/** + * function scrollBy(pixelX,pixelY) + * @param {Number} pixelX + * @param {Number} pixelY + * @memberOf Window + */ +Window.prototype.scrollBy=function(pixelX,pixelY){}; +/** + * function setInterval(arg1, arg2) + * @param {Function} callback + * @param {Number} delay + * @memberOf Window + * @returns {Number} + */ +Window.prototype.setInterval=function(callback, delay){return 0;}; +/** + * function setTimeout(callback, delay) + * @param {Function} callback + * @param {Number} delay + * @memberOf Window + * @returns {Number} + */ +Window.prototype.setTimeout=function(callback, delay){ return 0;}; +/** + * function atob(encodedData) + * @param {String} encodedData + * @memberOf Window + * @returns {String} + */ +Window.prototype.atob=function(encodedData){return "";}; +/** + * function btoa(arg) + * @param {String} stringToEncode + * @memberOf Window + * @returns {String} + */ +Window.prototype.btoa=function(stringToEncode){return "";}; +/** + * function setResizable(resizable) + * @param {Boolean} resizable + * @memberOf Window + */ +Window.prototype.setResizable=function(resizable){}; + +Window.prototype.captureEvents=function(eventType){}; +Window.prototype.releaseEvents=function(eventType){}; +Window.prototype.routeEvent=function(eventType){}; +Window.prototype.enableExternalCapture=function(){}; +Window.prototype.disableExternalCapture=function(){}; +Window.prototype.find=function(){}; +Window.prototype.back=function(){}; +Window.prototype.forward=function(){}; +Window.prototype.home=function(){}; +Window.prototype.stop=function(){}; +/** + * @param {Number} pixelX + * @param {Number} pixelY + */ +Window.prototype.scroll=function(pixelX,pixelY){}; +/* End functions */ + +/** + * Object History() + * @super Object + * @constructor + * @since Common Usage, no standard + */ +function History(){}; +History.prototype=new Object(); +History.prototype.history = new History(); +/** + * Property length + * @type Number + * @memberOf History + */ +History.prototype.length = 0; +/** + * function back() + * @memberOf History + */ +History.prototype.back = function(){}; +/** + * function forward() + * @memberOf History + */ +History.prototype.forward = function(){}; +/** + * function back() + * @param arg + * @memberOf History + */ +History.prototype.go = function(arg){}; + +/** + * Object Location() + * @super Object + * @constructor + * @since Common Usage, no standard + */ +function Location(){}; +Location.prototype = new Object(); +Location.prototype.location = new Location(); +/** + * Property hash + * @type String + * @memberOf Location + */ +Location.prototype.hash = ""; +/** + * Property host + * @type String + * @memberOf Location + */ +Location.prototype.host = ""; +/** + * Property hostname + * @type String + * @memberOf Location + */ +Location.prototype.hostname = ""; +/** + * Property href + * @type String + * @memberOf Location + */ +Location.prototype.href = ""; +/** + * Property pathname + * @type String + * @memberOf Location + */ +Location.prototype.pathname = ""; +/** + * Property port + * @type String + * @memberOf Location + */ +Location.prototype.port = ""; +/** + * Property protocol + * @type String + * @memberOf Location + */ +Location.prototype.protocol = ""; +/** + * Property search + * @type String + * @memberOf Location + */ +Location.prototype.search = ""; +/** + * function assign(arg) + * @param {String} arg + * @memberOf Location + */ +Location.prototype.assign = function(arg){}; +/** + * function reload(optionalArg) + * @param {Boolean} optionalArg + * @memberOf Location + */ +Location.prototype.reload = function(optionalArg){}; +/** + * function replace(arg) + * @param {String} arg + * @memberOf Location + */ +Location.prototype.replace = function(arg){}; + +/** + * Object Navigator() + * @super Object + * @constructor + * @since Common Usage, no standard +*/ +function Navigator(){}; +Navigator.prototype = new Object(); +Navigator.prototype.navigator = new Navigator(); +/** + * Property appCodeName + * @type String + * @memberOf Navigator + */ +Navigator.prototype.appCodeName = ""; +/** + * Property appName + * @type String + * @memberOf Navigator + */ +Navigator.prototype.appName = ""; +/** + * Property appVersion + * @type String + * @memberOf Navigator + */ +Navigator.prototype.appVersion = ""; +/** + * Property cookieEnabled + * @type Boolean + * @memberOf Navigator + */ +Navigator.prototype.cookieEnabled = new Boolean(); +/** + * Property mimeTypes + * @type Array + * @memberOf Navigator + */ +Navigator.prototype.mimeTypes = new Array(); +/** + * Property platform + * @type String + * @memberOf Navigator + */ +Navigator.prototype.platform = ""; +/** + * Property plugins + * @type Array + * @memberOf Navigator + */ +Navigator.prototype.plugins = new Array(); +/** + * Property userAgent + * @type String + * @memberOf Navigator + */ +Navigator.prototype.userAgent = ""; +/** + * function javaEnabled() + * @returns {Boolean} + * @memberOf Navigator + */ +Navigator.prototype.javaEnabled = function(){return false;}; + +/** + * Object Screen() + * @super Object + * @constructor + * @since Common Usage, no standard +*/ +function Screen(){}; +Screen.prototype = new Object(); +Screen.prototype.screen = new Screen(); +/** + * Property availHeight + * @type Number + * @memberOf Screen + */ +Navigator.prototype.availHeight = 0; +/** + * Property availWidth + * @type Number + * @memberOf Screen + */ +Navigator.prototype.availWidth = 0; +/** + * Property colorDepth + * @type Number + * @memberOf Screen + */ +Navigator.prototype.colorDepth = 0; +/** + * Property height + * @type Number + * @memberOf Screen + */ +Navigator.prototype.height = 0; +/** + * Property width + * @type Number + * @memberOf Screen + */ +Navigator.prototype.width = 0; + +Event.prototype=new Object(); +// PhaseType +Event.prototype.CAPTURING_PHASE = 1; +Event.prototype.AT_TARGET = 2; +Event.prototype.BUBBLING_PHASE = 3; + +Event.prototype.type=""; +Event.prototype.target=new EventTarget(); +Event.prototype.currentTarget=new EventTarget(); +Event.prototype.eventPhase=0; +Event.prototype.bubbles=false; +Event.prototype.cancelable=false; +Event.prototype.timeStamp=0; +Event.prototype.stopPropagation=function(){}; +Event.prototype.preventDefault=function(){}; +/** + * @param {String} eventTypeArg + * @param {Boolean} canBubbleArg + * @param {Boolean} cancelableArg + */ +Event.prototype.initEvent=function(eventTypeArg, + canBubbleArg, + cancelableArg){}; +function EventListener(){}; +EventListener.prototype=new Object(); +/** + * @param {Event} event + * @memberOf EventListener + */ +EventListener.prototype.handleEvent=function(event){}; + +function EventTarget(){}; +EventTarget.prototype=new Object(); +/* + * These functions may need to be moved into a browser specific library. + */ +/** + * @memberOf Window + * @param event {Event} + * @throws {EventException} + */ +EventTarget.prototype.dispatchEvent=function(event){}; + +// https://developer.mozilla.org/en-US/docs/DOM/element.addEventListener +/** + * @memberOf Window + * @param {String} type + * @param {EventListener} listener + * @param {Boolean} useCapture + */ +EventTarget.prototype.addEventListener=function(type, listener, useCapture){}; +// https://developer.mozilla.org/en-US/docs/DOM/element.removeEventListener +/** + * @memberOf Window + * @param {String} type + * @param {EventListener} listener + * @param {Boolean} useCapture + */ +EventTarget.prototype.removeEventListener=function(type, listener, useCapture){}; diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/dom5.js b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/dom5.js new file mode 100644 index 0000000..d199ab6 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/dom5.js @@ -0,0 +1,922 @@ +/******************************************************************************* + * Copyright (c) 2013 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + ******************************************************************************/ + +/** + * function querySelector(selectors) + * http://www.w3.org/TR/2012/PR-selectors-api-20121213 + * @param {String} selectors + * @memberOf Document + * @returns {Element} + */ +Document.prototype.querySelector=function(selectors){return new Element();}; + +/** + * function querySelectorAll(selectors) + * http://www.w3.org/TR/2012/PR-selectors-api-20121213 + * @param {String} selectors + * @memberOf Document + * @returns {NodeList} + */ +Document.prototype.querySelectorAll=function(selectors){return new NodeList();}; + +/** + * function querySelector(selectors) + * http://www.w3.org/TR/2012/PR-selectors-api-20121213 + * @param {String} selectors + * @memberOf DocumentFragment + * @returns {Element} + */ +DocumentFragment.prototype.querySelector=function(selectors){return new Element();}; + +/** + * function querySelectorAll(selectors) + * http://www.w3.org/TR/2012/PR-selectors-api-20121213 + * @param {String} selectors + * @memberOf DocumentFragment + * @returns {NodeList} + */ +DocumentFragment.prototype.querySelectorAll=function(selectors){return new NodeList();}; + +/** + * function querySelector(selectors) + * http://www.w3.org/TR/2012/PR-selectors-api-20121213 + * @param {String} selectors + * @memberOf Element + * @returns {Element} + */ +Element.prototype.querySelector=function(selectors){return new Element();}; + +/** + * function querySelectorAll(selectors) + * http://www.w3.org/TR/2012/PR-selectors-api-20121213 + * @param {String} selectors + * @memberOf Element + * @returns {NodeList} + */ +Element.prototype.querySelectorAll=function(selectors){return new NodeList();}; + +/** + * Property state + * @type Object + * @memberOf History + */ +History.prototype.state=new Object(); + +/** + * function pushState(data,title,url) + * http://www.w3.org/TR/2012/CR-html5-20121217/browsers.html#history + * @param {Object} data + * @param {String} title + * @param {String} url - optional + * @memberOf History + */ +History.prototype.pushState=function(data,title,url){}; + +/** + * function replaceState(data,title,url) + * http://www.w3.org/TR/2012/CR-html5-20121217/browsers.html#history + * @param {Object} data + * @param {String} title + * @param {String} url - optional + * @memberOf History + */ +History.prototype.replaceState=function(data,title,url){}; + +/** + * Property sessionStorage + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @type Storage + * @memberOf Window + */ +Window.prototype.sessionStorage=new Storage(); + +/** + * Property localStorage + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @type Storage + * @memberOf Window + */ +Window.prototype.localStorage=new Storage(); + +/** + * Object Storage + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + */ +function Storage(){}; +Storage.prototype=new Object(); + +/** + * Property length + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @type Number + * @memberOf Storage + */ +Storage.prototype.length=new Number(); + +/** + * function key(index) + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @param {Number} index + * @memberOf Storage + * @returns String + */ +Storage.prototype.key=function(index){return new String();}; + +/** + * function getItem(key) + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @param {String} key + * @memberOf Storage + * @returns String + */ +Storage.prototype.getItem=function(key){return new String();}; + +/** + * function setItem(key,value) + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @param {String} key + * @param {String} value + * @memberOf Storage + */ +Storage.prototype.setItem=function(key,value){}; + +/** + * function removeItem(key) + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @param {String} key + * @memberOf Storage + */ +Storage.prototype.removeItem=function(key){}; + +/** + * function clear() + * http://www.w3.org/TR/2011/CR-webstorage-20111208 + * @memberOf Storage + */ +Storage.prototype.clear=function(){}; + +/** + * Object WebSocket + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @constructor + * @param {String} url + */ +function WebSocket(url){}; +WebSocket.prototype=new Object(); + +/** + * Constant WebSocket.CONNECTING=0 + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @constant + * @type Number + */ +WebSocket.prototype.CONNECTING=0; + +/** + * Constant WebSocket.OPEN=1 + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @constant + * @type Number + */ +WebSocket.prototype.OPEN=1; + +/** + * Constant WebSocket.CLOSING=2 + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @constant + * @type Number + */ +WebSocket.prototype.CLOSING=2; + +/** + * Constant WebSocket.CLOSED=3 + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @constant + * @type Number + */ +WebSocket.prototype.CLOSED=3; + +/** + * Property url + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @type String + * @memberOf WebSocket + */ +WebSocket.prototype.url=new String(); + +/** + * Property readyState + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @type Number + * @memberOf WebSocket + */ +WebSocket.prototype.readyState=new Number(); + +/** + * Property bufferedAmount + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @type Number + * @memberOf WebSocket + */ +WebSocket.prototype.bufferedAmount=new Number(); + +/** + * Property extensions + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @type String + * @memberOf WebSocket + */ +WebSocket.prototype.extensions=new String(); + +/** + * Property protocol + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @type String + * @memberOf WebSocket + */ +WebSocket.prototype.protocol=new String(); + +/** + * Property binaryType + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @type String + * @memberOf WebSocket + */ +WebSocket.prototype.binaryType=new String(); + +/** + * function close(code,reason) + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @param {Number} code - optional + * @param {String} reason - optional + * @memberOf WebSocket + */ +WebSocket.prototype.close=function(code,reason){}; + +/** + * function send(data) + * http://www.w3.org/TR/2012/CR-websockets-20120920 + * @param {Object} data - may be a String, Blob, ArrayBuffer, or ArrayBufferView + * @memberOf WebSocket + */ +WebSocket.prototype.send=function(data){}; + +/** + * Property geolocation + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Geolocation + * @memberOf Navigator + */ +Navigator.prototype.geolocation=new Geolocation(); + +/** + * Object Geolocation + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + */ +function Geolocation(){}; +Geolocation.prototype=new Object(); + +/** + * function getCurrentPosition(successCallback,errorCallback,options) + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510/ + * @param {Function} successCallback (Position pos) + * @param {Function} errorCallback (PositionError error) - optional + * @param {PositionOptions} options - optional + * @memberOf Geolocation + */ +Geolocation.prototype.getCurrentPosition=function(successCallback,errorCallback,options){}; + +/** + * function watchPosition(successCallback,errorCallback,options) + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510/ + * @param {Function} successCallback (Position pos) + * @param {Function} errorCallback (PositionError error) - optional + * @param {PositionOptions} options - optional + * @memberOf Geolocation + * @returns {Number} + */ +Geolocation.prototype.watchPosition=function(successCallback,errorCallback,options){return new Number();}; + +/** + * function clearWatch(watchId) + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @param {Number} watchId + * @memberOf Geolocation + */ +Geolocation.prototype.clearWatch=function(watchId){}; + +/** + * Object Coordinates + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + */ +function Coordinates(){}; +Coordinates.prototype=new Object(); + +/** + * Property latitude + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Coordinates + */ +Coordinates.prototype.latitude=new Number();; + +/** + * Property longitude + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Coordinates + */ +Coordinates.prototype.longitude=new Number();; + +/** + * Property altitude + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Coordinates + */ +Coordinates.prototype.altitude=new Number();; + +/** + * Property accuracy + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Coordinates + */ +Coordinates.prototype.accuracy=new Number();; + +/** + * Property altitudeAccuracy + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Coordinates + */ +Coordinates.prototype.altitudeAccuracy=new Number();; + +/** + * Property heading + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Coordinates + */ +Coordinates.prototype.heading=new Number();; + +/** + * Property speed + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Coordinates + */ +Coordinates.prototype.speed=new Number(); + +/** + * Object Position + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + */ +function Position(){}; +Position.prototype=new Object(); + +/** + * Property coords + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Coordinates + * @memberOf Position + */ +Position.prototype.coords=new Coordinates(); + +/** + * Property timestamp + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf Position + */ +Position.prototype.timestamp=new Number; + +/** + * Object PositionError + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + */ +function PositionError(){}; +PositionError.prototype=new Object(); + +/** + * Constant PositionError.PERMISSION_DENIED=1 + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @constant + * @type Number + */ +PositionError.prototype.PERMISSION_DENIED=1; + +/** + * Constant PositionError.POSITION_UNAVAILABLE=2 + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @constant + * @type Number + */ +PositionError.prototype.POSITION_UNAVAILABLE=2; + +/** + * Constant PositionError.TIMEOUT=3 + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @constant + * @type Number + */ +PositionError.prototype.TIMEOUT=3; + +/** + * Property code + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf PositionError + */ +PositionError.prototype.code=new Number(); + +/** + * Property message + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type String + * @memberOf PositionError + */ +PositionError.prototype.message=new String(); + +/** + * Object PositionOptions + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + */ +function PositionOptions(){}; +PositionOptions.prototype=new Object(); + +/** + * Property enableHighAccuracy + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Boolean + * @memberOf PositionOptions + */ +PositionOptions.prototype.enableHighAccuracy=new Boolean(); + +/** + * Property timeout + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf PositionOptions + */ +PositionOptions.prototype.timeout=new Number(); + +/** + * Property maximumAge + * http://www.w3.org/TR/2012/PR-geolocation-API-20120510 + * @type Number + * @memberOf PositionOptions + */ +PositionOptions.prototype.maximumAge=new Number(); + +/** + * Object TimeRanges + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + */ +function TimeRanges(){}; +TimeRanges.prototype=new Object(); + +/** + * Property length + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf TimeRanges + */ +TimeRanges.prototype.length=new Number(); + +/** + * function start(index) + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @param {Number} index + * @memberOf TimeRanges + * @returns {Number} + */ +function start(index) {return new Number();}; + +/** + * function end(index) + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @param {Number} index + * @memberOf TimeRanges + * @returns {Number} + */ +function end(index) {return new Number();}; + +/** + * Object MediaError + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + */ +function MediaError(){}; +MediaError.prototype=new Object(); + +/** + * Constant MediaError.MEDIA_ERR_ABORTED=1 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +MediaError.prototype.MEDIA_ERR_ABORTED=1; + +/** + * Constant MediaError.MEDIA_ERR_NETWORK=2 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +MediaError.prototype.MEDIA_ERR_NETWORK=2; + +/** + * Constant MediaError.MEDIA_ERR_DECODED=3 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +MediaError.prototype.MEDIA_ERR_DECODE=3; + +/** + * Constant MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED=4 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +MediaError.prototype.MEDIA_ERR_SRC_NOT_SUPPORTED=4; + +/** + * Property code + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf MediaError + */ +MediaError.prototype.code=new Number(); + +/** + * Object HTMLMediaElement + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @augments HTMLElement + * @see HTMLElement + */ +function HTMLMediaElement(){}; +HTMLMediaElement.prototype = new HTMLElement(); + +/** + * Property src + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type String + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.src=new String(); + +/** + * Property currentSrc + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type String + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.currentSrc=new String(); + +/** + * Property crossOrigin + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type String + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.crossOrigin=new String(); + +/** + * Constant HTMLMediaElement.NETWORK_EMPTY=0 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.NETWORK_EMPTY=0; + +/** + * Constant HTMLMediaElement.NETWORK_IDLE=1 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.NETWORK_IDLE=1; + +/** + * Constant HTMLMediaElement.NETWORK_LOADING=2 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.NETWORK_LOADING=2; + +/** + * Constant HTMLMediaElement.NETWORK_NO_SOURCE=3 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.NETWORK_NO_SOURCE=3; + +/** + * Property networkState + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.networkState=new Number(); + +/** + * Property preload + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type String + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.preload=new String(); + +/** + * Property buffered + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type TimeRanges + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.buffered=new TimeRanges(); + +/** + * function load() + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.load=function(){}; + +/** + * function canPlayType(type) + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @param {String} type + * @memberOf HTMLMediaElement + * @returns {String} + */ +HTMLMediaElement.prototype.canPlayType=function(type){new String();}; + +/** + * Constant HTMLMediaElement.HAVE_NOTHING=0 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.HAVE_NOTHING=0; + +/** + * Constant HTMLMediaElement.HAVE_METADATA=1 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.HAVE_METADATA=1; + +/** + * Constant HTMLMediaElement.HAVE_CURRENT_DATA=2 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.HAVE_CURRENT_DATA=2; + +/** + * Constant HTMLMediaElement.HAVE_FUTURE_DATA=3 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.HAVE_FUTURE_DATA=3; + +/** + * Constant HTMLMediaElement.HAVE_ENOUGH_DATA=4 + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @constant + * @type Number + */ +HTMLMediaElement.prototype.HAVE_ENOUGH_DATA=4; + +/** + * Property readyState + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.readyState=new Number(); + +/** + * Property seeking + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.seeking=new Boolean(); + +/** + * Property currentTime + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.currentTime=new Number(); + +/** + * Property initialTime + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.initialTime=new Number(); + +/** + * Property duration + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.duration=new Number(); + +/** + * Property startOffsetTime + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Date + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.startOffsetTime=new Date(); + +/** + * Property paused + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.paused=new Boolean(); + +/** + * Property defaultPlaybackRate + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.defaultPlaybackRate=new Number(); + +/** + * Property playbackRate + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.playbackRate=new Number(); + +/** + * Property played + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type TimeRanges + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.played=new TimeRanges(); + +/** + * Property seekable + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type TimeRanges + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.seekable=new TimeRanges(); + +/** + * Property ended + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.ended=new Boolean(); + +/** + * Property autoplay + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.autoplay=new Boolean(); + +/** + * Property loop + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.loop=new Boolean(); + +/** + * function play() + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.play=function(){}; + +/** + * function pause() + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.pause=function(){}; + +/** + * Property controls + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.controls=new Boolean(); + +/** + * Property volume + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.volume=new Number(); + +/** + * Property muted + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.muted=new Boolean(); + +/** + * Property defaultMuted + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Boolean + * @memberOf HTMLMediaElement + */ +HTMLMediaElement.prototype.defaultMuted=new Boolean(); + +/** + * Object HTMLAudioElement + * http://www.w3.org/TR/2012/WD-html5-20120329/the-audio-element.html + * @augments HTMLMediaElement + * @constructor + * @param {String} src + * @see HTMLMediaElement + */ +function HTMLAudioElement(src){}; +HTMLAudioElement.prototype = new HTMLMediaElement(); + +/** + * Object HTMLVideoElement + * http://www.w3.org/TR/2012/WD-html5-20120329/the-audio-element.html + * @augments HTMLMediaElement + * @see HTMLMediaElement + */ +function HTMLVideoElement(){}; +HTMLVideoElement.prototype = new HTMLMediaElement(); + +/** + * Property width + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLVideoElement + */ +HTMLVideoElement.prototype.width=new Number(); + +/** + * Property height + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLVideoElement + */ +HTMLVideoElement.prototype.height=new Number(); + +/** + * Property videoWidth + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLVideoElement + */ +HTMLVideoElement.prototype.videoWidth=new Number(); + +/** + * Property videoHeight + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type Number + * @memberOf HTMLVideoElement + */ +HTMLVideoElement.prototype.videoHeight=new Number(); + +/** + * Property poster + * http://www.w3.org/TR/2012/WD-html5-20120329/media-elements.html + * @type String + * @memberOf HTMLVideoElement + */ +HTMLVideoElement.prototype.poster=new String(); + diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/system.js b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/system.js new file mode 100644 index 0000000..2066ffb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/system.js @@ -0,0 +1,1458 @@ +/******************************************************************************* + * Copyright (c) 2008, 2010 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + ****************************************************************************** +* Please see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html +*/ + +/** + * Object Object() + * @constructor + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function Object(){}; + /** + * function toString() + * @memberOf Object + * @returns {String} + * @see Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Object.prototype.toString = function(){return "";}; + /** + * function toLocaleString() + * @memberOf Object + * @returns {String} + * @see Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Object.prototype.toLocaleString = function(){return "";}; + /** + * function valueOf() + * @memberOf Object + * @returns {Object} + * @see Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Object.prototype.valueOf = function(){return new Object();}; + /** + * function hasOwnProperty(name) + * @memberOf Object + * @param {String} name + * @returns {Boolean} + * @see Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Object.prototype.hasOwnProperty = function(name){return true;}; + /** + * function isPrototypeOf(o) + * @memberOf Object + * @param {Object} o + * @returns {Boolean} + * @see Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Object.prototype.isPrototypeOf = function(o){return true;}; + /** + * function propertyIsEnumerable(name) + * @memberOf Object + * @param {Object} name + * @returns {Boolean} + * @see Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Object.prototype.propertyIsEnumerable = function(name){return true;}; +/** + * Property constructor + * @type Function + * @memberOf Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Object.prototype.constructor = new Function(); + +/** + * Object String() + * @constructor + * @extends Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function String(){} +String.prototype = new Object(); +/** + * static function fromCharCode(charCode1, ...) + * @memberOf String + * @param {Number} charCode + * @returns {String} + * @static + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.fromCharCode = function(charCode){return "";}; +/** + * Property length + * @type Number + * @memberOf String + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.length = 1; + /** + * function charAt(position) + * @memberOf String + * @param {Number} position + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.charAt = function(position){return "";}; + /** + * function charCodeAt(position) + * @memberOf String + * @param {Number} position + * @returns {Number} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.charCodeAt = function(position){return 0;}; + /** + * function concat(value1, ...) + * @memberOf String + * @param {String} value + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.concat = function(value){return "";}; + /** + * function indexOf(searchString, startPosition) + * @memberOf String + * @param {String} searchString + * @param {Number} startPosition + * @returns {Number} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.indexOf = function(searchString, startPosition){return 1;}; + /** + * function lastIndexOf(searchString, startPosition) + * @memberOf String + * @param {String} searchString + * @param {Number} startPosition + * @returns {Number} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.lastIndexOf = function(searchString, startPosition){return 1;}; + /** + * function localeCompare(otherString) + * @memberOf String + * @param {String} otherString + * @returns {Number} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.localeCompare = function(otherString){return 0;}; + /** + * function match(regexp) + * @memberOf String + * @param {RegExp} regexp + * @returns {Array} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.match = function(regexp){return [];}; + /** + * function replace(regexp, replaceValue) + * @memberOf String + * @param {RegExp} regexp + * @param {String} replaceValue + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.replace = function(regexp, replaceValue){return "";}; + /** + * function search(regexp) + * @memberOf String + * @param {RegExp} regexp + * @returns {Number} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.search = function(regexp){return 1;}; + /** + * function slice(start, end) + * @memberOf String + * @param {Number} start + * @param {Number} end + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.slice = function(start, end){return "";}; + /** + * function split(separator, limit) + * @memberOf String + * @param {String} separator + * @param {Number} limit + * @returns {Array} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.split = function(separator, limit){return [];}; + /** + * function substring(start, end) + * @memberOf String + * @param {Number} start + * @param {Number} end + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.substring = function(start, end){return "";}; + /** + * function toLowerCase() + * @memberOf String + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.toLowerCase = function(){return "";}; + /** + * function toLocaleLowerCase() + * @memberOf String + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.toLocaleLowerCase = function(){return "";}; + /** + * function toUpperCase() + * @memberOf String + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.toUpperCase= function (){return "";}; + /** + * function toLocaleUpperCase() + * @memberOf String + * @returns {String} + * @see String + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +String.prototype.toLocaleUpperCase = function(){return "";}; + +/** + * Object Number() + * @constructor + * @extends Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function Number(){} +Number.prototype = new Object(); +/** + * property MIN_VALUE + * @type Number + * @memberOf Number + * @static + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Number.MIN_VALUE = 0; +/** + * property MAX_VALUE + * @type Number + * @memberOf Number + * @static + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Number.MAX_VALUE = 0 ; +/** + * property NaN + * @type Number + * @memberOf Number + * @static + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Number.NaN = 0; +/** + * property NEGATIVE_INFINITY + * @type Number + * @memberOf Number + * @static + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Number.NEGATIVE_INFINITY = 0; +/** + * property POSITIVE_INFINITY + * @type Number + * @memberOf Number + * @static + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Number.POSITIVE_INFINITY = 0; +/** + * function toFixed(fractionDigits) + * @memberOf Number + * @param {Number} fractionDigits + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Number.prototype.toFixed = function(fractionDigits){return "";}; +/** + * function toExponential(fractionDigits) + * @memberOf Number + * @param {Number} fractionDigits + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +Number.prototype.toExponential = function(fractionDigits){return "";}; +/** + * function toPrecision(precision) + * @memberOf Number + * @param {Number} fractionDigits + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +Number.prototype.toPrecision = function(fractionDigits){return "";}; + +/** + * Object Boolean() + * @constructor + * @extends Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +function Boolean(){}; +Boolean.prototype = new Object(); + +/** + * Object Array() + * @constructor + * @extends Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function Array(){}; +Array.prototype = new Object(); +/** + * Property length + * @type Number + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.length = 1; +/** + * function concat(args) + * @param {Array} args + * @returns {Array} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.concat = function(args){return [];}; +/** + * function join(seperator) + * @param {String} seperator + * @returns {Array} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.join = function(seperator){return [];}; +/** + * function pop() + * @returns {Object} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.pop = function(){return new Object();}; +/** + * function push(args) + * @param {Array} args + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.push = function(args){}; +/** + * function reverse() + * @returns {Array} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.reverse = function(){return [];}; +/** + * function shift() + * @returns {Object} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.shift = function(){return new Object();}; +/** + * function slice(start, end) + * @param {Number} start + * @param {Number} end + * @returns {Array} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.slice = function(start, end){return [];}; +/** + * function sort(funct) + * @param {Function} funct + * @returns {Array} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.sort = function(funct){return [];}; +/** + * function splice(start, deletecount, items) + * @param {Number} start + * @param {Number} deletecount + * @param {Array} items + * @returns {Array} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.splice = function(start, deletecount, items){return [];}; +/** + * function unshift(items) + * @param {Object} values + * @returns {Number} + * @memberOf Array + * @see Array + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Array.prototype.unshift = function(values){return 1;}; + +/** + * Object Function() + * @constructor + * @extends Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function Function(){}; +Function.prototype = new Object(); +/** + * function apply (thisObject, argArray) + * @param {Object} thisObject + * @param {Array} argArray + * @returns {Object} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Function.prototype.apply = function(thisArg, argArray){return new Object();}; +/** + * function call (thisObject, args) + * @param {Object} thisObject + * @param {Object} args + * @returns {Object} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Function.prototype.call = function(thisObject, args){return new Object();}; +/** + * property length + * @type Number + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Function.prototype.length = 0; + +/** + * Object Date(s) + * @constructor + * @param {String} s + * @extends Object + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function Date(s){}; +Date.prototype = new Object(); +/** + * function UTC(hour, min, sec, ms) + * @memberOf Date + * @param {Number} hour + * @param {Number} min + * @param {Number} sec + * @param {Number} ms + * @returns {Number} + * @static + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +Date.UTC = function(hour, min, sec, ms){return 0;}; +/** + * function parse(string) + * @memberOf Date + * @param {String} string + * @returns {Number} + * @static + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.parse = function(string){return 0;}; +/** + * function toDateString() + * @memberOf Date + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.toDateString = function(){return "";}; +/** + * function toTimeString() + * @memberOf Date + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.toTimeString = function(){return "";}; +/** + * function toLocaleString() + * @memberOf Date + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.toLocaleString = function(){return "";}; +/** + * function toLocaleDateString() + * @memberOf Date + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.toLocaleDateString = function(){return "";}; +/** + * function toLocaleTimeString() + * @memberOf Date + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.toLocaleTimeString = function(){return "";}; +/** + * function valueOf() + * @memberOf Date + * @returns {Object} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.valueOf = function(){return new Object();}; +/** + * function getFullYear() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getFullYear = function(){return 0;}; +/** + * function getTime() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getTime = function(){return 0;}; +/** + * function getUTCFullYear() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getUTCFullYear = function(){return 0;}; +/** + * function getMonth() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getMonth = function(){return 0;}; +/** + * function getUTCMonth() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getUTCMonth = function(){return 0;}; +/** + * function getDate() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getDate = function(){return 0;}; +/** + * function getUTCDate() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getUTCDate = function(){return 0;}; +/** + * function getDay() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getDay = function(){return 0;}; +/** + * function getUTCDay() + * @memberOf Date + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + + */ +Date.prototype.getUTCDay=function(){return 0;}; +/** + * function getHours() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getHours = function(){return 0;}; +/** + * function getUTCHours() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getUTCHours = function(){return 0;}; +/** + * function getMinutes() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getMinutes = function(){return 0;}; +/** + * function getUTCMinutes() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getUTCMinutes = function(){return 0;}; +/** + * function getSeconds() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getSeconds = function(){return 0;}; +/** + * function getUTCSeconds() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getUTCSeconds = function(){return 0;}; +/** + * function getMilliseconds() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getMilliseconds = function(){return 0;}; +/** + * function getUTCMilliseconds() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getUTCMilliseconds = function(){return 0;}; +/** + * function getTimezoneOffset() + * @memberOf Date + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.getTimezoneOffset = function(){return 0;}; +/** + * function setTime(value) + * @memberOf Date + * @returns {Number} + * @param {Number} value + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setTime = function(value){return 0;}; + +/** + * function setMilliseconds(value) + * @memberOf Date + * @returns {Number} + * @param {Number} value + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setMilliseconds = function(value){return 0;}; +/** + * function setUTCMilliseconds(ms) + * @memberOf Date + * @returns {Number} + * @param {Number} ms + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setUTCMilliseconds = function(ms){return 0;}; +/** + * function setSeconds(sec,ms) + * @memberOf Date + * @returns {Number} + * @param {Number} sec + * @param {Number} ms + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setSeconds = function(sec,ms){return 0;}; +/** + * function setUTCSeconds(sec,ms) + * @memberOf Date + * @returns {Number} + * @param {Number} sec + * @param {Number} ms + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setUTCSeconds=function(sec,ms){return 0;}; +/** + * function setMinutes(min,sec,ms) + * @memberOf Date + * @returns {Number} + * @param {Number} min + * @param {Number} sec + * @param {Number} ms + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setMinutes=function(min,sec,ms){return 0;}; +/** + * function setUTCMinute(min,sec,ms) + * @memberOf Date + * @returns {Number} + * @param {Number} min + * @param {Number} sec + * @param {Number} ms + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setUTCMinute = function(min,sec,ms){return 0;}; +/** + * function setHours(hour, min,sec,ms) + * @memberOf Date + * @returns {Number} + * @param {Number} hour + * @param {Number} min + * @param {Number} sec + * @param {Number} ms + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setHours = function(hour,min,sec,ms){return 0;}; +/** + * function setUTCHours(hour, min,sec,ms) + * @memberOf Date + * @returns {Number} + * @param {Number} hour + * @param {Number} min + * @param {Number} sec + * @param {Number} ms + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setUTCHours = function(hour,min,sec,ms){return 0;}; + +/** + * function setDate(date) + * @memberOf Date + * @returns {Number} + * @param {Number} date + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setDate = function(date){return 0;}; + +/** + * function setUTCDate(date) + * @memberOf Date + * @returns {Number} + * @param {Number} date + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setUTCDate = function(date){return 0;}; + +/** + * function setMonth(month,date) + * @memberOf Date + * @returns {Number} + * @param {Number} date + * @param {Number} month + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setMonth = function(month,date){return 1;}; +/** + * function setUTCMonth(month,date) + * @memberOf Date + * @returns {Number} + * @param {Number} date + * @param {Number} month + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setUTCMonth = function(month,date){return 1;}; +/** + * function setFullYear(month,date) + * @memberOf Date + * @returns {Number} + * @param {Number} date + * @param {Number} month + * @param {Number} year + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setFullYear = function(year, month,date){return 0;}; +/** + * function setUTCFullYear(month,date) + * @memberOf Date + * @returns {Date} + * @param {Number} date + * @param {Number} month + * @param {Number} year + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Date.prototype.setUTCFullYear = function(year, month,date){}; +/** + * function toUTCString() + * @memberOf Date + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +Date.prototype.toUTCString = function(){return "";}; + +/** + * Property NaN + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +var NaN=0; +/** + * Property Infinity + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +var Infinity=0; +/** + * function eval(s) + * @param {String} s + * @type Object + * @returns {Object} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function eval(s){return new Object();}; + +//@GINO: Bug 197987 (Temp Fix) +/** + * Property debugger + * @description Debugger keyword + */ +var debugger=null; + +/** + * Property undefined + * @description undefined +*/ +var undefined=null; + +/** + * function parseInt(s,radix) + * @param {String} s + * @param {Number} radix + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function parseInt(s,radix){return 0;}; +/** + * function parseFloat(s) + * @param {String} s + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function parseFloat(s){return 0;}; +/** + * function escape(s) + * @param {String} s + * @type String + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +function escape(s){return "";}; +/** + * function unescape(s) + * @param {String} s + * @type String + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +function unescape(s){return "";}; +/** + * function isNaN(number) + * @param {String} number + * @type Boolean + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function isNaN(number){return false;}; +/** + * function isFinite(number) + * @param {String} number + * @type Boolean + * @returns {Boolean} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function isFinite(number){return false;}; +/** + * function decodeURI(encodedURI) + * @param {String} encodedURI + * @type String + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +function decodeURI(encodedURI){return "";}; +/** + * @param {String} uriComponent + * @type String + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +function decodeURIComponent(uriComponent){return "";}; +/** + * function encodeURIComponent(uriComponent) + * @param {String} uriComponent + * @type String + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +function encodeURIComponent(uriComponent){return "";}; + +/** + * function encodeURIComponent(URI) + * @param {String} URI + * @type String + * @returns {String} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. +*/ +function encodeURI(URI){return "";}; + +/** + * Object Math(\s) + * @super Object + * @constructor + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + + */ +function Math(){}; +Math.prototype=new Object(); +/** + * Property E + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.E=0; +/** + * Property LN10 + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.LN10=0; +/** + * Property LN2 + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.LN2=0; +/** + * Property LOG2E + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.LOG2E=0; +/** + * Property LOG10E + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.LOG10E=0; +/** + * Property PI + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.PI=0; +/** + * Property SQRT1_2 + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.SQRT1_2=0; +/** + * Property SQRT2 + * @memberOf Math + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.SQRT2=0; +/** + * function abs(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.abs=function(x){return 0;}; +/** + * function acos(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.acos=function(x){return 0;}; +/** + * function asin(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.asin=function(x){return 0;}; +/** + * function atan(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.atan=function(x){return 0;}; +/** + * function atan2(x,y) + * @memberOf Math + * @param {Number} x + * @param {Number} y + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.atan2=function(x,y){return 0;}; +/** + * function ceil(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.ceil=function(x){return 0;}; +/** + * function cos(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.cos=function(x){return 0;}; +/** + * function exp(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.exp=function(x){return 0;}; +/** + * function floor(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.floor=function(x){return 0;}; +/** + * function log(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.log=function(x){return 0;}; +/** + * function max(arg) + * @memberOf Math + * @param {Number} args + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.max=function(args){return 0;}; +/** + * function min(arg) + * @memberOf Math + * @param {Number} args + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.min=function(args){return 0;}; +/** + * function pow(x,y) + * @memberOf Math + * @param {Number} x + * @param {Number} y + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.pow=function(x,y){return 0;}; +/** + * function pow() + * @memberOf Math + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.random=function(){return 0;}; +/** + * function round(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.round=function(x){return 0;}; +/** + * function sin(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.sin=function(x){return 0;}; +/** + * function sqrt(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.sqrt=function(x){return 0;}; +/** + * function tan(x) + * @memberOf Math + * @param {Number} x + * @type Number + * @returns {Number} + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Math.tan=function(x){return 0;}; +/** + * Object RegExp() + * @super Object + * @constructor + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function RegExp(){}; +RegExp.prototype=new Object(); +/** + * function exec(string) + * @param {String} string + * @returns {Array} + * @type Array + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +RegExp.prototype.exec=function(string){return [];}; +/** + * function test(string) + * @param {String} string + * @returns {Boolean} + * @type Boolean + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +RegExp.prototype.test=function(string){return false;}; +/** + * property source + * @type String + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +RegExp.prototype.source=""; +/** + * property global + * @type Boolean + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +RegExp.prototype.global=false; + +/** + * property ignoreCase + * @type Boolean + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +RegExp.prototype.ignoreCase=false; +/** + * property multiline + * @type Boolean + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +RegExp.prototype.multiline=false; +/** + * property lastIndex + * @type Number + * @memberOf RegExp + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +RegExp.prototype.lastIndex=0; +/** + * Object Error(message) + * @super Object + * @constructor + * @param {String} message + * @memberOf Error + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function Error(message){}; +Error.prototype=new Object(); +/** + * property name + * @type String + * @memberOf Error + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Error.prototype.name=""; +/** + * property message + * @type String + * @memberOf Error + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +Error.prototype.message=""; +/** + * Object EvalError() + * @super Error + * @constructor + * + * @memberOf EvalError + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function EvalError(){}; +EvalError.prototype=new Error(""); +/** + * Object RangeError() + * @super Error + * @constructor + * + * @memberOf RangeError + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function RangeError(){}; +RangeError.prototype=new Error(""); +/** + * Object ReferenceError() + * @super Error + * @constructor + * + * @memberOf ReferenceError + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function ReferenceError(){}; +ReferenceError.prototype=new Error(""); +/** + * Object SyntaxError() + * @super Error + * @constructor + * + * @memberOf SyntaxError + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function SyntaxError(){}; +SyntaxError.prototype=new Error(""); +/** + * Object TypeError() + * @super Error + * @constructor + * + * @memberOf TypeError + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function TypeError(){}; +TypeError.prototype=new Error(""); +/** + * Object URIError() + * @super Error + * @constructor + * + * @memberOf URIError + * @since Standard ECMA-262 3rd. Edition + * @since Level 2 Document Object Model Core Definition. + */ +function URIError(){}; +URIError.prototype=new Error(""); + +//support for debugger keyword +var debugger = null; \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/xhr.js b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/xhr.js new file mode 100644 index 0000000..4d6c011 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.jsdt.core/libraries/xhr.js @@ -0,0 +1,104 @@ +/******************************************************************************* + * Copyright (c) 2009, 2011 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + ****************************************************************************** + * + * Based on information from https://developer.mozilla.org/En/XMLHttpRequest + * and http://msdn2.microsoft.com/en-us/library/ms533062.aspx + **/ + +/** +* function createRequest +* @type XMLHttpRequest +* @memberOf Window +*/ +Window.prototype.createRequest= function(){return new XMLHttpRequest();}; +/** +* Object XMLHttpRequest +* @type constructor +*/ +XMLHttpRequest.prototype=new Object(); +function XMLHttpRequest(){}; + +/** + * function onreadystatechange + * @memberOf XMLHttpRequest + */ +XMLHttpRequest.prototype.onreadystatechange=function(){}; +/** + * property readyState + * @type Number + * @memberOf XMLHttpRequest + */ +XMLHttpRequest.prototype.readyState=0; +/** + * property responseText + * @type String + * @memberOf XMLHttpRequest + */ +XMLHttpRequest.prototype.responseText=""; +/** + * property responseXML + * @type Document + * @memberOf XMLHttpRequest + */ +XMLHttpRequest.prototype.responseXML=new Document(); +/** + * property status + * @type Number + * @memberOf XMLHttpRequest + */ +XMLHttpRequest.prototype.status=0; +/** + * property statusText + * @type String + * @memberOf XMLHttpRequest + */ +XMLHttpRequest.prototype.statusText=""; +/** + * function abort() + * @memberOf XMLHttpRequest + */ +XMLHttpRequest.prototype.abort=function(){}; +/** +* function getAllResponseHeaders() +* @type String +* @memberOf XMLHttpRequest +*/ +XMLHttpRequest.prototype.getAllResponseHeaders=function(){return "";}; +/** +* function open(method, url, async, username, password) +* @param {String} method +* @param {String} url +* @param {Boolean} optional async +* @param {String} optional username +* @param {String} optional password +* @memberOf XMLHttpRequest +*/ +XMLHttpRequest.prototype.open=function(method, url, async, username, password){}; +/** +* function send(body) +* @param {Object} body +* @memberOf XMLHttpRequest +*/ +XMLHttpRequest.prototype.send=function(body){}; +/** +* function setRequestHeader(header,value) +* @param {String} header +* @param {String} value +* @memberOf XMLHttpRequest +*/ +XMLHttpRequest.prototype.setRequestHeader=function(header,value){}; +/** +* function getAllResponseHeaders() +* @param {String} header +* @type String +* @memberOf XMLHttpRequest +*/ +XMLHttpRequest.prototype.getResponseHeader=function(header){return "";}; diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.core/variablesAndContainers.dat b/.metadata/.plugins/org.eclipse.wst.jsdt.core/variablesAndContainers.dat new file mode 100644 index 0000000..3f8e74c Binary files /dev/null and b/.metadata/.plugins/org.eclipse.wst.jsdt.core/variablesAndContainers.dat differ diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.ui/OpenTypeHistory.xml b/.metadata/.plugins/org.eclipse.wst.jsdt.ui/OpenTypeHistory.xml new file mode 100644 index 0000000..a4ee3cb --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.jsdt.ui/OpenTypeHistory.xml @@ -0,0 +1,2 @@ + + diff --git a/.metadata/.plugins/org.eclipse.wst.jsdt.ui/QualifiedTypeNameHistory.xml b/.metadata/.plugins/org.eclipse.wst.jsdt.ui/QualifiedTypeNameHistory.xml new file mode 100644 index 0000000..9e390f5 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.jsdt.ui/QualifiedTypeNameHistory.xml @@ -0,0 +1,2 @@ + + diff --git a/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties b/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties new file mode 100644 index 0000000..59e4aed --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties @@ -0,0 +1,3 @@ +# +#Fri Dec 04 18:49:30 CET 2015 +task-tag-projects-already-scanned=TheButtonAutoFlair,RemoteSystemsTempFiles diff --git a/.metadata/.plugins/org.eclipse.wst.sse.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.wst.sse.ui/dialog_settings.xml new file mode 100644 index 0000000..63fae25 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.sse.ui/dialog_settings.xml @@ -0,0 +1,5 @@ + +
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.wst.xml.core/default_catalog.xml b/.metadata/.plugins/org.eclipse.wst.xml.core/default_catalog.xml new file mode 100644 index 0000000..37faa16 --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.xml.core/default_catalog.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/.metadata/.plugins/org.eclipse.wst.xml.core/system_catalog.xml b/.metadata/.plugins/org.eclipse.wst.xml.core/system_catalog.xml new file mode 100644 index 0000000..376e21f --- /dev/null +++ b/.metadata/.plugins/org.eclipse.wst.xml.core/system_catalog.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.metadata/version.ini b/.metadata/version.ini new file mode 100644 index 0000000..c775128 --- /dev/null +++ b/.metadata/version.ini @@ -0,0 +1,3 @@ +#Fri Dec 18 22:41:54 CET 2015 +org.eclipse.core.runtime=2 +org.eclipse.platform=4.4.2.v20150204-1700 diff --git a/TheButtonAutoFlair.jar b/TheButtonAutoFlair.jar index 302fafd..7935f10 100644 Binary files a/TheButtonAutoFlair.jar and b/TheButtonAutoFlair.jar differ diff --git a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/Commands.java b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/Commands.java index 1205b00..4a3b9fe 100644 --- a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/Commands.java +++ b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/Commands.java @@ -31,7 +31,7 @@ import java.util.Timer; public class Commands implements CommandExecutor { - public static boolean PluginUpdated = false; // 2015.08.31. + public static MaybeOfflinePlayer Lastlol = null; // This method is called, when somebody uses our command @Override @@ -45,8 +45,7 @@ public class Commands implements CommandExecutor { return false; MaybeOfflinePlayer p = MaybeOfflinePlayer.AllPlayers.get(player .getUniqueId()); - switch (args[0].toLowerCase()) - { + switch (args[0].toLowerCase()) { case "accept": { if (args.length < 2 && p.UserNames.size() > 1) { player.sendMessage("§9Multiple users commented your name. §bPlease pick one using /u accept "); @@ -122,7 +121,7 @@ public class Commands implements CommandExecutor { } if (!p.FlairState.equals(FlairStates.Ignored)) { p.FlairState = FlairStates.Ignored; - p.FlairTime = ""; + p.SetFlairTime(""); p.UserName = ""; player.sendMessage("§bYou have removed your flair. You can still use /u accept to get one.§r"); } else @@ -190,7 +189,17 @@ public class Commands implements CommandExecutor { MaybeOfflinePlayer.AddPlayerIfNeeded(player.getUniqueId()).RPMode = true; } return true; - case "unlol": // TODO: Unlol + case "unlol": + Player p = null; + if (Lastlol != null + && (p = Bukkit.getPlayer(Lastlol.UUID)) != null) { + p.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, 10 * 20, 5, false, false)); + for (Player pl : PluginMain.GetPlayers()) + pl.sendMessage(player.getDisplayName() + " unlolled " + + p.getDisplayName()); + Lastlol = null; + } return true; default: player.sendMessage("Unknown command: " + cmd.getName()); @@ -347,8 +356,7 @@ public class Commands implements CommandExecutor { private static void SetPlayerFlair(Player player, MaybeOfflinePlayer targetplayer, short flaircolor, String flairtime) { - targetplayer.FlairColor = flaircolor; - targetplayer.FlairTime = flairtime; + targetplayer.SetFlair(flaircolor, flairtime); targetplayer.FlairState = FlairStates.Accepted; targetplayer.UserName = ""; SendMessage(player, @@ -390,7 +398,6 @@ public class Commands implements CommandExecutor { "https://github.com/NorbiPeti/thebuttonautoflairmc/raw/master/TheButtonAutoFlair.jar"); FileUtils.copyURLToFile(url, new File( "plugins/TheButtonAutoFlair.jar")); - PluginUpdated = true; // 2015.08.31. SendMessage(player, "Updating done!"); } catch (MalformedURLException e) { System.out.println("Error!\n" + e); diff --git a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/MaybeOfflinePlayer.java b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/MaybeOfflinePlayer.java index 9d8da54..c4c944b 100644 --- a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/MaybeOfflinePlayer.java +++ b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/MaybeOfflinePlayer.java @@ -5,21 +5,24 @@ import java.util.HashMap; import java.util.List; import java.util.UUID; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; public class MaybeOfflinePlayer { public String PlayerName; public String UserName; public List UserNames; - public String FlairTime; - public short FlairColor; + private String FlairTime; + private short FlairColor; public FlairStates FlairState; public boolean RPMode = true; public boolean PressedF; public Location SavedLocation; public boolean Working; + public int Tables = 10; public UUID UUID; @@ -86,4 +89,37 @@ public class MaybeOfflinePlayer { return String.format("§%x(??s)§r", FlairColor); return String.format("§%x(%ss)§r", FlairColor, FlairTime); } + + public void SetFlairColor(int color) { + FlairColor = (short) color; + SetFlair2(); + } + + public void SetFlairTime(String time) { + FlairTime = time; + SetFlair2(); + } + + public void SetFlair(int color, String time) { + FlairColor = (short) color; + FlairTime = time; + SetFlair2(); + } + + private void SetFlair2() { + + // Flairs from Command Block The Button - Teams + // PluginMain.Instance.getServer().getScoreboardManager().getMainScoreboard().getTeams().add() + Player p = Bukkit.getPlayer(UUID); + p.setPlayerListName(String.format("%s%s", p.getPlayerListName(), + GetFormattedFlair())); + } + + public short GetFlairColor() { + return FlairColor; + } + + public String GetFlairTime() { + return FlairTime; + } } diff --git a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PlayerListener.java b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PlayerListener.java index 947236f..062c981 100644 --- a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PlayerListener.java +++ b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PlayerListener.java @@ -96,6 +96,8 @@ public class PlayerListener implements Listener { // 2015.07.16. } mp.RPMode = true; // 2015.08.25. + + mp.SetFlairColor(mp.GetFlairColor()); //Update display } @EventHandler @@ -133,7 +135,8 @@ public class PlayerListener implements Listener { // 2015.07.16. (float) NotificationPitch); // 2015.08.14. MaybeOfflinePlayer mp = MaybeOfflinePlayer.AddPlayerIfNeeded(p .getUniqueId()); // 2015.08.17. - color = String.format("§%x", mp.FlairColor); + color = String.format("§%x", (mp.GetFlairColor() == 0x00 ? 0xb + : mp.GetFlairColor())); // TODO: Quiz queue } message = message.replace(p.getName(), color + p.getName() @@ -236,16 +239,10 @@ public class PlayerListener implements Listener { // 2015.07.16. if (e.getMessage().startsWith(">")) e.setMessage("§2" + e.getMessage()); - /* - * Channel c = ((Chat) Bukkit.getPluginManager().getPlugin("TownyChat")) - * .getChannelsHandler().getActiveChannel(e.getPlayer(), - * channelTypes.GLOBAL); - */ - /* - * List modes = ((Chat) Bukkit.getPluginManager().getPlugin( - * "TownyChat")).getTowny().getPlayerMode(e.getPlayer()); if - * (modes.size() == 0 || modes.contains("g")) { - */ + if (e.getMessage().contains("lol")) + Commands.Lastlol = MaybeOfflinePlayer.AllPlayers.get(e.getPlayer() + .getUniqueId()); + if (e.getFormat().contains("[g]")) { StringBuilder sb = new StringBuilder(); sb.append("tellraw @a [\"\""); diff --git a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PluginMain.java b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PluginMain.java index ceb7a8c..55ecff5 100644 --- a/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PluginMain.java +++ b/TheButtonAutoFlair/src/tk/sznp/thebuttonautoflair/PluginMain.java @@ -71,6 +71,7 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15. this.getCommand("ooc").setExecutor(comm); this.getCommand("ooc").setUsage( this.getCommand("ooc").getUsage().replace('&', '§')); + this.getCommand("unlol").setExecutor(comm); Instance = this; // 2015.08.08. Console = this.getServer().getConsoleSender(); // 2015.08.12. LoadFiles(false); // 2015.08.09. @@ -187,31 +188,31 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15. p.FlairState = FlairStates.Recognised; switch (flairclass) { case "press-1": - p.FlairColor = 0xc; + p.SetFlairColor(0xc); break; case "press-2": - p.FlairColor = 0x6; + p.SetFlairColor(0x6); break; case "press-3": - p.FlairColor = 0xe; + p.SetFlairColor(0xe); break; case "press-4": - p.FlairColor = 0xa; + p.SetFlairColor(0xa); break; case "press-5": - p.FlairColor = 0x9; + p.SetFlairColor(0x9); break; case "press-6": - p.FlairColor = 0x5; + p.SetFlairColor(0x5); break; case "no-press": - p.FlairColor = 0x7; + p.SetFlairColor(0x7); break; case "cheater": - p.FlairColor = 0x5; + p.SetFlairColor(0x5); break; case "cant-press": - p.FlairColor = 0xf; + p.SetFlairColor(0xf); break; case "unknown": if (text.equals("-1")) // If true, only non-presser/can't press; if @@ -219,20 +220,18 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15. { try { if (CheckForJoinDate(p)) { - p.FlairColor = 0x7; - p.FlairTime = "--"; + p.SetFlair(0x7, "--"); } else { - p.FlairColor = 0xf; - p.FlairTime = "--"; + p.SetFlair(0xf, "--"); } } catch (Exception e) { p.FlairState = FlairStates.Commented; // Flair unknown - p.FlairColor = 0; + p.SetFlairColor(0); e.printStackTrace(); } } else { p.FlairState = FlairStates.Commented; // Flair unknown - p.FlairColor = 0; + p.SetFlairColor(0); } return; default: @@ -240,7 +239,7 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15. } if (text.equals("-1")) text = "--"; - p.FlairTime = text; + p.SetFlairTime(text); } public static boolean CheckForJoinDate(MaybeOfflinePlayer mp) diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands$1.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands$1.class index 50dc676..736a5ed 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands$1.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands$1.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands$2.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands$2.class index d685a97..6b0f0d4 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands$2.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands$2.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands.class index 42ae890..ee4bb00 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/Commands.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/MaybeOfflinePlayer.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/MaybeOfflinePlayer.class index dbff9ae..3e830e9 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/MaybeOfflinePlayer.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/MaybeOfflinePlayer.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$2.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$2.class index eecc230..8ea4932 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$2.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener$2.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener.class index 55775a2..b4b7910 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PlayerListener.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$1.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$1.class index 4257a51..a6c493b 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$1.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$1.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$2.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$2.class index 5c7b657..c6da3ad 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$2.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain$2.class differ diff --git a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain.class b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain.class index bcd89c7..0d65f53 100644 Binary files a/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain.class and b/TheButtonAutoFlair/target/classes/tk/sznp/thebuttonautoflair/PluginMain.class differ