From 5f25889f8445c6bf6bdcdd2edeaa1e4f2ff8c134 Mon Sep 17 00:00:00 2001 From: tenkuma Date: Wed, 19 Mar 2025 06:33:41 -0300 Subject: [PATCH] First commit. --- .classpath | 12 +++ .project | 17 ++++ .settings/org.eclipse.core.resources.prefs | 2 + .settings/org.eclipse.jdt.core.prefs | 9 +++ .../devilwithin/CursesEntityListener.class | Bin 0 -> 2533 bytes .../devilwithin/CursesPlayerListener.class | Bin 0 -> 3529 bytes .../adrianvictor/devilwithin/Enchanting.class | Bin 0 -> 13576 bytes .../EnchantingEntityListener.class | Bin 0 -> 13200 bytes .../devilwithin/TheDevilWithin.class | Bin 0 -> 3284 bytes config.yml | 17 ++++ plugin.yml | 7 ++ .../devilwithin/CursesEntityListener.java | 43 ++++++++++ .../devilwithin/CursesPlayerListener.java | 66 +++++++++++++++ .../adrianvictor/devilwithin/Enchanting.java | 75 +++++++++++++++++ .../devilwithin/EnchantingEntityListener.java | 76 ++++++++++++++++++ .../devilwithin/TheDevilWithin.java | 54 +++++++++++++ 16 files changed, 378 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 bin/gd/rf/adrianvictor/devilwithin/CursesEntityListener.class create mode 100644 bin/gd/rf/adrianvictor/devilwithin/CursesPlayerListener.class create mode 100644 bin/gd/rf/adrianvictor/devilwithin/Enchanting.class create mode 100644 bin/gd/rf/adrianvictor/devilwithin/EnchantingEntityListener.class create mode 100644 bin/gd/rf/adrianvictor/devilwithin/TheDevilWithin.class create mode 100644 config.yml create mode 100644 plugin.yml create mode 100644 src/gd/rf/adrianvictor/devilwithin/CursesEntityListener.java create mode 100644 src/gd/rf/adrianvictor/devilwithin/CursesPlayerListener.java create mode 100644 src/gd/rf/adrianvictor/devilwithin/Enchanting.java create mode 100644 src/gd/rf/adrianvictor/devilwithin/EnchantingEntityListener.java create mode 100644 src/gd/rf/adrianvictor/devilwithin/TheDevilWithin.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..67f6d3a --- /dev/null +++ b/.classpath @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..0b80670 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + TheDevilWithin + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..acdbf9c --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/bin/gd/rf/adrianvictor/devilwithin/CursesEntityListener.class b/bin/gd/rf/adrianvictor/devilwithin/CursesEntityListener.class new file mode 100644 index 0000000000000000000000000000000000000000..49fba79941dff39ac9578d600852d64d55aea72f GIT binary patch literal 2533 zcmX^0Z`VEs1_l#`Hg*OkMh4^b6#b$!{lt`_%*4F1%;b{%BK?%qvdokentjGB#W_| z!owiQAjHTZke*tC;u=N<4Gm3XN8olhCj%pc2oD1*0~;d)zfWdfs$XetQfg61Vp2{j zBZH7nesW??SYlBohz}KHDaptzW@Iq+AtMq%;RNvuBZD%s3n79S!NkbGm!AiT8<)h~ z#Pn1~20fJE#S)1Sg|493wFZT!9D@QogFGXHCQ^9f*T%!3$e_f?z?q&}0}U@;+Y3>T7FR_Ml@x@Wb`3A z;VP}U8MGL5*cr4L8B~z0!Kt2yL6<>~k%1SKFfvk$OA2xlOHvsblu$i^(C%51nj2h_ zn4E3R&S1dEAOKFS;6xLYn3s~D%f+D2z|F;A%wWpSV8X~Cht&;mLwFd>7|a zLMjVV85zV;?e$G8NiE7u%(3QVuw<}iXRu;q5JoZ)Ce6cO!(hwEAmZ%d=;`O{=;;&h z?BN<565!();>yS%iky02TCBMkEE(*17#tWJA=$z=vBIUaC^0EBC$ppyoWX)Y-f-q& zZ~-X+1rS0WrRxWm6lLb6 zJC$bUq@)&cF!(SsFxqf2cry5bauTVg>$YF-K>gDy5lVCaQ< z!kU92nvsFYPJx3VmXSd`8J=w7lS+&7;&W4rixbmRIT+#@84T1+BJ)cX%JcKoOB8Yw zvr`pvQx#G&i$V4#7U?LI=9OgTD0o7oD)USAxEK-{lGz!OP*X2BePJt1c^Fa{QX$z7 z=4%TqUcvB*HP(PhXUJq{$Y5lU!4c%n`8oMTJPcV3*^CT4Y57IDi6vm6VsJ^08HEx5e+Qv0Tl*?JPbt){)`OV#i@BIzL0G9arPhoLyt$}(jxm^#fh`4EcncS$<|bz5W#*+L zvK=D>FSzXSO)P-cFkHd;rA5i9ZkeDuND^CRt_O-221N!&24)5Z21W)3Pz}bwz`(@7 z$iU9P!NADC$-uzi$-uM26Qb4S240dL$y4x6> z%-BR(McGm&o3V?si?XuiEMjnxWDyYA#^5@O!AfU0gJ-0W_jU$fjvWjE+Ze)xqP8)F zX>DN;7K#yy+s2TvgCT7jL)bQkoSh5>Obj{#DLWa8nHWGmWM%;Q(2RkXfq_Aiftx{! zL6||BL7qW|L4!e#!Hhwk!Ja{Z!IeRg!IwdqA&fzVA%Q`ap`SsGVLF2rI3$7~euRg_ z42E)s3I;|7VTM+QN`@*1CI)$iN``8N8U|(t4Tb`ST826X76yBU2!?uw1_o9JSB4;l wMur9kHU?h?FNP+D1_pM9W(EcZeg-D)e+=F149e^b#_SCG42%pd;3#PY0PXO>p#T5? literal 0 HcmV?d00001 diff --git a/bin/gd/rf/adrianvictor/devilwithin/CursesPlayerListener.class b/bin/gd/rf/adrianvictor/devilwithin/CursesPlayerListener.class new file mode 100644 index 0000000000000000000000000000000000000000..3a08573ba3f512558ffcbaa8c69cc9c7b61de1e3 GIT binary patch literal 3529 zcmX^0Z`VEs1_l#`UF-}@j10!5grCs1~x_pexJ;|RKL>Pq|~C2#H5^5 zMg}3D{N%)(u*9NF5FaYYQj(Eb%*bHsLq;Tk!U^IRMh0bM7eWLvf{BrVCqEAoH@^90 zsf-LdD1nP53PH+TK{0C$3QIW#1$G8`Mh11Hu*9c{he44+iIIUbJ+%a4Dk!C@Sfn3s~D%f+C~z|GB|&Y;Q8puxx>fowUlb{+;T25m+L zp7hib&peQu^NT7m;w}>=1GN*b(wdt=mqDMML64C^1<3}S>UkIp7z`O1xYJWhd{WcX zGxO4m85xvNeTUHOS(2I?T#}faZOz4C%wWpSV8X~Cht(RmN*)F?26ILR_Vm<}kjjEo zMh0z>i4}&*@4ZBZC1-aAFB5m{LS}R17MQ zN*Ecmks_LqMo=~{<6$TVWnRwo)Dn->oZQqBP#&t}VWPmND1%1=y5PAo3rVyI(iU}vaDEl0rNgRQRP zVQ6G%Vr1Y-Peo)EF%2JZ+~y?arRxWm6lLb6TSsX|aWJ$nGKk}F00%=GBLknOLULlB zdWk}DPHJj_9>^&jJPe%-U64W;ViY5T1s3x$ZPdgR0%e9C9)@0qK1K$Xc82MU4ANL?!JNz_ z{gBj(5*~(`46_&+MAAX+kHnHxNbLaglc<}69{SLD=U`aE$Y7~v;*1pR3J^|GQEFmIMyj4dcs?jf z(o;(m^70i5GEC!t7#SEq4J-x*24)6E26hGx21W)>1_lOC1||k31_lOR zt?dk4TH4zfc(*bLZ)9L#U}6wuU|`?_YZhf-VGv{BVGw5!V_;wqgJ@t7XOLh30bT}4 z1}O$c21W*H1{sL4jP?v{4BQM14CUI}7-W5SGbl%HXHfOi*~y^B$gq<^hmpaGMUv$h zLzE=THU^_j3>M26{K3p^40dL$AeNIEn<%R&TgqfJc2RawR<@i)47$487+hyEsOjuv z@ML7L;t*l*)!oM6FTxOwkNHef9$T09S z$T3JUC@^R-C^DEZC^1+wC^I-Ss51C4s4)aHs53+}XfR|lXfl*B=z=|(#=r&g0^FnJ z4Dk#J42%q{3`Goy3`q=347?0k49N^B49pBt46zKU3~3B33?>Xt4CxFR46F>+4Au;p z3>ge;49*P33|R~r4D1Zi4AKnQ3^@!O44DkP47m(>44e%4;DBcQ$56)3pw7;q%+6rU zz{pU*PzVi7R|ZxFb_NE9N!r^OihN;#Sjx!Yr+bW{UKbpK70Vb(K`c-JvgmGOa57^R zWf5gfnQX=;$|lMJ3cpaTEeyg!)hyc>YG*Qt=zw|6Lao~v+IKQ^GcoAwX6TO;nz)@| zGRF>vsoNN43(eogFdM9Dq0r)O4DCA@mTqI1y^Ue@PKNbN4B9N)7&alo*@%IMfq}u0 zftA6CL6E_OL7u^sL4(1JL650*kds)F3RlRVlbW8MnU`J+7vV|D&o4o6*&voOGHCc<@m5Y|lD;$8 zRi#CVC7Jnot`*jd42mkj;hrJR9`PZLPCl+G`9rqmTwc36XQgExaOJA)4+gEmrbAf%Cp!H>b8k%1qSFLE-Ivr|*R1q>sD z6l%5rCwG0YoHaK?AVV-aLl7f_7?Mp$DtH(|7(y8t*wa%>LMjVV85zV;4TBX2)?5tU z4B%6J&S^4?`(K86yLGeo;zh z9;m!!)&P|!*$fpt43!L3j0^(K9*&-VzK)(g@gA-|zOEsR45G+M6v_N(h8iA*T827C z2KHiDL`tBfO1NTB>WgM*;9+QFXkujGEk+G&7L8!dFm{F(Mh0K5f8&GhS`h^JZbqwxrrrUp<-~Ah~YLYB{Imlb9or% zG0bOV;3&z5`AtLvi&{{cUC6_*h@q2_fx9?0F9llZb24NzEa72T3Q89uh;-rX;Tjwg z;NuwL3R19~hhYUsfe=E0kE^@8r=NQ;NO~0y!)lN;KSJ8c-#;Xnk%1Ll^e{5$A}24f z7-~ZYwH#w);K+qH7FaUD<$(gS30U&DH6sI83R31~3cJVOmX4u2Xz*d%+Q<_=~%9)zc$Y#Tgu?7Xp zJ|2espkQHk^b7*=5ArY^0`XZL0|I=&;d+FJ;V48TD9Aq?q~E!AX@8km&y}-k85hTjuF_RFx&-+GCM(>bf1Ue0f^7yQt*g} z;W0>n)hWo;5$wvRJPgmEBAyU8zTjba2@>IR3i1#4i}wu;_6YL#_XTNx&BO2pB*o?w z>g??bcIrDGhW8*Ley7kNKTkjRc(>3XKSyVr1YKmuGK0Ys4e;$ip=5@rRbW{}-~c^LkIL|B}C93wdyvKbk87#TqVoFIXC zCr2NU4;h(x7+FA~ToBP9h^H9Yco^A1!Yt1Ij$n11Jd9i*0S=HrynhhLF^oJsjJzO0 zZfAcdCm+|~5Pxv+GxGB=3V_6gki_GILmWMWK%Qb0;$aj9NwYiq`vy1$gT+L77{x$h z+|K^~-mWh3Zl1v&AXiK9FiL{N*+Al+U|Xem7-c|0tj5DV9!4dQD6flah^upme^7joqbJxiDm;v;AQ^TSPe)&WKTyOns`D^vfW)|=V)2d< zVB55K7_~v-yfATCGGx@{VbnvF0hI(GM;q`k8iHhmV0yr@0xM$}jd>VNK+=3LX-L%s z(rL!SXbzHsyTZdC>1=n0Zxb@B9vsP*Py^Z|+RgGC_8G2Y(| zl(`uFco_Xba(pOqejr~4@-PO0q*z=$gFv~0F@%RP6ePgu;u##^>KE(^Dn%H>c^D%= zqTDY2p-w)o@xdXk0U+&BJdDvGab{O{cMw08hcOPsXLoaT4Do>IP2gcn1c|Y_x%z=~ z7h^IHV+u%w#my6vdee9q(?J5v@h}#H#8};Zpvk+Ghp`MKBI54j9}c$5)diegU|Fex zhp`f*fD@zuECcdcH4kGANR$sQ8t)Ps40cl;4`V$@ipSmG$Hmnz9#+yaHu5kwfh0IU z60lU#5Vr)mIztocA|A%YAaRJb@RYrjhjAH_Ff3WG;9*<|5@vM|g2vWr9>z5w z5jOWA$1q4Vuj64{4-(>W4{~+&i$~bCk%w^;RKnB8$JHf1z&{97|I2`N67DBkLFs<8hE2Cs@wK-yfW>PVz9G0*OL&fJ7lV7nI`8@GzbQ$#H{qAfop? z590-pI0r-=QYu~IVZ00ygg6u)y;pe{uYrVl!D^AC_XZE+O^^)46lnC`=3%@86666Z zM~dEiJdF225)k9z(fE*u@ez_REE=EiFg^td^LaTsd&m37`#AcAxCVjCo98@?FF;c4 zUZLKuPW}-fkG|qzd<_y~^Ko=>fs`3GaY2LKZv4--E~ga_2pa&?IZTg}Ok%_PXfBm|OR_VEXmxJ)8EOrjt@myf@n zdps=PFp2XpNq~fzeH}psHIoz%lQf9W?d$2|jR+AYSso@ikT{30r=P2{Be)J=Qs7}y z1POBc`a8u32RMfNK^&#b!=wTd7xeWH4vvgRYEpn)rpCjh4wB`CwY%bj{X@Z)Yw|E@ zfn>P+TtSsW5G2Pj>F_Y=LWKQ8T;Xxdq|d`-021c#cMA4&@pJ^G8zv(jCS$N*fTO2h zh^HUe@1{IVW*|Y<0LK7`3oUq zP~QM=Pq1Tyd6+^#VyqxV;KUQg!xRn@;RtdJhc(uiB6*miAcD}^4HQE$JWR15L7pI} zAhgP3isxZU07(eJB|`jzoIRlJ2c{$*reu(`Ai6ZzMX5YYX&_l%xNJD2T4&1OVaf!_ zfb2tVjWcEQFy(+GI6y%W=@t!O&e7_Ow}MU)?imx7jQV$@-WqbMA(8oTphv9U#12g zrbdtuOR%Rq*e}gIOf4V*PLM!+fIql`XKLeNY6ppO1^amVy22XlOr1PTT_9nWU_WrD zg{g;!sTU-`2@-%S>*ryb021Ybh=MXSC^9DTFii#tvjqEto5D;}d6=ew1UQ5JLw({w z9t0_y!NW8YB+3>X;P2-S_U>#Rra2%X{@@VD5Kn(U$Dqh~P(cS$K97fKK1fagNiN(m z1d=-z@-Qs|NwPqjZ%j*gn81B-R&bIA>0i#nv;w4r6&|>&c$mQbY)-HUv|?mh%fqw| zq>cw7>J%Ch0?AApc$hYVB%sP6tq-QnJWN|aqP!60h?<3I8xPZVkPJ6e2HN{)+R4MT z3rQSS|e zH8|AW5mXm5o#0_Q2@>G~i^MxSf_qR*r+JvpfP@7Q!ici!91qiZkR*F>s84`LDA=5f zJWQ8BV$31nCM(kw9;T}xJ}Wp+fdctD57P~h2xmx;V?aEp)(45+;$gZC77cgw@ref| zK#=HN9;SOBQPyzB5NA+7jOhUn(?ggDBwio$Fg*c@@PK0)sdRtF!}J^^!5r@D1TyR; z57R3UpEcaW72IEEdc(u?79_$F?hkHqGri|w`T!E(1_`+O!Cm)>hv_p&oC72dO9fwf zn7)AoIl+Q3kNn_a`Uw(+D21kg-#kozK!QAArAP_j9}m-ikOUV*0vi9!j6BRt2w_x$nb~=mIY8nNQ-YzXf|-klnHwYw@*b#D*cgG-Y$+%i*hQe2CQ@{8CR_!$|v zg7Zs@l2hF>LBsg`(5bS_ymUQ~J_bbwMh0dE1_pKp2GFbu0|>A)aDXV#d<2;0g7Uec zG!FwW1A~AU10MrF0|Nsy10#a~gCGMVgAfA)!yE<{1||juh5)VY48mI4+Ze=zWCSd? zG01IYP=RpOgfzA>Xl-TCgK!OmjKEwI2-i%=0?f67aBYO_z+8uo3=9lR3{DIT402$% ziZie|n@R#>l&ap+J&t8$+?)Dh38dMg|6k84L^zvl$o|WEmJ3 z!WbAB`WYA)PUvo8DBs3Vtt-m1jiFwWbvHwEq)_X2hIWn}3|-q8CJ0U0#xOx^3xnPc zhH2XvCTwGvvy))~6T@sDtL>7<3to8T1+K84MV_7z`N- z7>pUp8B7>z8B7_LF_k@&Jg{V zL6DK1A@vV~4Ld`&g@uKM00(H!0c1V{gXnK?#$ezs-^8#z@)!flhVUH>JNND3^48kK zuy-3nF^m6l29|KGO$-ONF%%1=!FY#3ybKuc*fxe@L58C+?n#g&2aI3ZaJ7c0mfYh=1zife}YUh zhw=V^c)>8lTVLVL`&kDxV0b4N}#?=RN zXTrEfVD1bU*A&cchjA^y+*vTLHOOE~7|#yGtAOzwLA-Jp&jrLQgYn$K#vFrjy+D$2 zFrF`n7Z2kFY-1>9hjD^IQW7v;7>K6><3)na+y&#tfVoXDZaheB7>t($;+epBsbHmh zVB8EacL9u>4N{v5DLtySy822ccy9UNR0n+LLP@seS@yC7Z?jQ0S<%Z2eCgLpA8-ZKy{6vlfA;yJ;1Z$Lb8 z81FrZCkEqv0`a(Eysu!Vt%PxZfVmrB+}~hsKaBei%lV6YL#F-D-cf^#^ z5Kj)qa|Ro;5XN-_Nk+qXo?ywHFs=_sQU=EJ2l2vTydV(I8O93*YupdxMu53%Vcckt zS}zzc4#e|;@e)BiUl=b1#Iu0$(m^~;7%vONQ-|?#!B(t>aSK3_yf9udh$ji-m4SG$ z0+^{1tg#a&Sp(*tgmLS^+@&yX6G*EAjMoa5+z#V*fF%84yl$}MIvBSPBpC?fO$705 zVZ13IUL=e+9mErX@n(T|JTTr|5RVJSTL9we!g!!If^mmGlTI!ohgAl7>^Sqrvl^gfOyt09zTeu2H{0+X4t-g;WUE)gCv6t zvk-$UgF1s2vk-$egDHarvk-$NgA0Q@vk-#^Ll8qKvk*fVLjprGvk*fHLq0n6Jsm05MvwT zM8+x1LX1-x7ceen7Ghk&xQ=lnvk>DZ#yyPtnS~e+FrH*Q!z{#jmhn2{EoLFc+lQw&o&Qx>xjQ#Ml>Qzf$yQx#JyQwOsUQzz3Drs>Q=Of#4k zGc98lVp`6$k!cIF5Ytws{Y;0Lg_sUAon^YfEW~t?={D0nW+A5gOs|;UG7B-iWBS4L zn^}nI4>KDxC$kVU7qc+47_$(wII|+N3bPQiDziSb5wj4pF|!@BBeM{*6SFUK0J9Kt zAagWx9J3H}JaZ;<4zmz*E^`HQHM0A*4S%~=`3kM4~ zvk(gpi#UrEvk;3kiyDh2vk;3Giz$l*vk;3Viwlc8vk;31OAt#avk*%dOCn1Ovk*%v zOFl~xvk*%$OD#(Svk*%oOAkvwvk=P!mRT%wnT1&9v8-TO%`C*ShGi?u4rU>ioh*l0 zjxh_d9A~-2a+O(#RFmM6?YEKgb9vwUI}V)@MSkCl;Gh?R+zhn1gMh*f}9idB|b zh*geNlU0XVh*g)>g4LQ?h}DMGoz;t3h}D}llr@4`h&7Tmg*Ba7h&6+?n6->qh_#%x zk+p?ch_#h<0_$XEA=W9Z^H>)$3$ZR@UBkMbS%`H5>n_&4%tEaDSWmE?W)@;S!+MSN zCbJOhE!HQj&zXf-U$A~+{mLxF`i+f&jhR`9jfIVmO^{iLO^8i~O`chZO@U3DO^;cK zO`pw*&6Zh+&5q5J&4*ct&6h2LEt*+~Eru3t&&-Yt%|LMt({qjt%Ge6 z+f-&DwrOk&*cLMju`OX+$F`AKh;0+w9=83=LTm@vPP3h37GgWkc8l#Uvk==owwG*g zn1$HhvVCX!#Vo}3o1K-NgIS23lUFkTx zmof{nFJs@pzL{BweGB`3_Cw4k zEX4kYgPntmS%`z1LzF{;S%^cDLzzR3S%^cO!;r&-S%|}w!=A&5S%|}#!)=OTw)gDxXf{n;~}#U$0Lq69PgQhI6iRv=J>}f#POe#laq&8 zh?AF7oKuQfh*O$Vl~aRRh*Oi(nA40|h|`?Yk<*1)h|`tRpEHPAh%=ZomNS7_h%=Eh zn=_ADh%=wFg0q@gh_i;XjkA+kh_j1x3g>iYA4%M$a$Od9iD zOPWiSOM_X6OOwll%bZz=%Yw^^%avJ(%Z)35E0|e`D}*bKE0I}4$L4%G0J43~aG6FfuSO@PP-K zKqH>p7#LXC7^i!%GmHFZ5N2RxXBGhwLJU6a%uvD?&H{^pxd;L*h9JNaL~z0C&>jiVsSYR%G0ufPQbqG_yTm%7@KqJ7iU@o+goqSwX@{7_{Alg)X6H8KyG81zc8JMCy85!7YGV?M^>=+rCH8jH* z8Cab2Q&PDYm>IZv7}yy&7#a9|GV@aXN^_G^i$W5Ua#9%?gnaUo6LZ26i!wocs31#8 zMrJW1gQX9dzO!az;LFd0_`)SIH!(exkwH(x2fueA3SB|rV67R(#URWe%FZCd$e>BI zHXa5s2609P&h*q0h~10~G8&pF)*^?mH9LbOBZCC8@et{NoW#o1B9IHDc^G6EWFbaE z+y@R?Pi_VY26-L^1(=*iYGO`F21thz4}&s;3L^tYdTNPtVrg+IBZDQH8$dopjcJI{ zV6Uq{*kG;JoD6CV8te?}j0~p8t|Zz39tKSYEk*_wH%A{IMh0_~kRaL+uq$+U7<55K zakvEehx>W@xr3ah&% za|lSxf``EpB*x<780H8Pu;yW~0SRyihq}4>J3EGW`ulM**fBV;GuSgS2qSqPmgIRD z92uM#83dd?96kMf9X);GJzRZ!T|*cdM3FrTQ*O=0z{udj!{Ex`#>l{#Ssb34Sd^KU z&d6YdnlO=*fHhWwG^0Qc^Wb6d1lccwu;1CkH8>=|$1%heq`;ep!3U&32%*5o)!p6G z&pj9iAbVde&^wbjH#0r%`Y(-$Nfy#Gu z?^-i5@PcE+3n$ezI40a5yJPd81(v3a8C?zv5F$a`nI(Qg5 zK?wm=wmIeJmlT5pyLlLTK!TuB*CRD2H?;&L+Q-At4-(~0Pc89DO;69vOD|?*U@gc@ zO-|)xU}TsCvX2d9(G(trsSMK?8Q97ab4pW-85txrG^3FN3?B8MTr-1*VJ0ZoFgtn% zf%vm|80LWZtd0QzKHzLOkB4DCL?kH4KOCfHArHeMkO;Grs|$#~goj}%h|lii>JsD+ zDzxkvmh&*I0Euxrxw^zV`9MWi@i43giLyBPJBEO?uH|7^2Nm!G+qQv+VIx$)-y5W2 zGY`WSkN~HXzrS~|hpUepNOT(y!*-A;vlGNgJ9!v(f%q&={^33#1$%fH_JRahoq}8) z!LHoT!*Bp90xnqX7!L6;90rN-If2UHc;C=qk05`4Uy$~rJPgM`QfyA4&fczIr=H+p zI0+KscM1&x71;4^p+SC*&R|!c=3zJkl4EmrbPfpx7f0uK7|w%)SezZb!D=q@FkAu& zaDfC6L2`wM;VMX&6Zu1j3=cuVEYALpV0Djq7@mLxI6wmN{y|{JJmX<_4ie;c_IGmfaSaafhXnsi z9)?#SaUmq}_}~yn&mgd;-taKI1xd3z`}+ns27|@k^Duk>iE%so`+K{(#JhP0dw^X1 ziHG4cNSqBM?g_T_D-XjrkPxeLkbeMJ^A8?|pCA!V7gtA@c&AW^*55n~e?X$VF0LW2 z&LRFm@j;HBV9)&HVfYV{VR!L#^!4`xMJyvD4KUMh;XNP({JXV8_VC!^jPi5rXLf#|o?pV&vsvYI(V$|Sa)C9@# zp~!(+4~*J8j5;7G78lPTP_AIq<6+bX32?f21_!wM1-pVu5k^BEMkA0Yw~K$MlaFhB zaENOFD3DBe7)?Rq%&zY4Aig;dqXmf1?&j(k;sMcX#lvU~5@U69^#kWFMq5w=$O)w0 zo`=x^B*zU(WS)NR@j?Dz|2gq6I)lVn-F!U#!0vM8VRQqD@PkF-9sOKDj&KDfB1R7$ zMsQ1m9g%|>y?GeHjSE(HA4s}p^y6U!wL1StT^ zfSee@!x#z@<%5gHyMzXV-4xEl7y**vargIearKLb6|sy_JdDvG2@a41EcwRrFvfud zxxj+(w41=gn200{OSs8Aj42>tez0oPRGY@bm=2QT2FoFmY$gw57DyaoEi}F6@G$0r z1R>UX`nmgq-JZ|GSO5~{1)G7KhKqO@i$O9FQ=kdBl!vhlBnb9uJW}ed;9;x;NkH5Z zjXaD^AYoSbAZTp0@G!Q5MA+Pe9K#^d+|I+; z0TSYI4{~+&i$~bi#lzSQmGJcOadn9g@DBpjHH^JHjC~*pW=}}Mo4~_35ya>4^z)7n zb_CaKjFWj7r$7XQ{QY2&HI0XHI!KVq6C?8h(qDgyN-u(JxG`rtQI+XH}WuU0?9y3fky8Z9>%R8K_0Mjr0Ctw!?*(^0WlsP zjk|alcOwbIqH!+|<35lupO>Svcf5bRkE36RYY@1gIl#ks5G2L!73%HkvSHp8<7}zy--U9!7BO%nj-; z#ltIk#)~|R;7Xd^2T>qh;b8>V(7aHwcyPA@$-@Y)!kK;i!DZ|l9!7AT&E@0o=N=EwFz4y@b&a_b#{c5`agIW!PPdmufJ1#aDZdDAH-3=c^JVJx1g_oaByV2GfLxv z@gEN(xbo(OwY1`c{X;>PGcocofva#XKUYvS5Cq9;Oe{Q1;2NCE&p*T!9=S~HJWSx~ zo5SBJ*we++5tLwhH1o}eN- z-pMf-RCh87^DsfGX{fksM2M?jFr?4SB*w!8uBL^dlD__7pb8mCU=TZV@TTw}99%NZtl9wu-_%@*Jv6asFgF)8sdfoo`i0RM2;AXk@oq~K;! z);ustXmf~3gNF%RQ?mzz`UZG=f&)UEhY4Iovw{?X5)YFe4->eK<_K~Ohc(Zb z40)KqRWwHsv|8h2uwydeVFK6BJTO6MUB_h3!vwCVh2Rn){z1+j&=v!e6%Ug&D7y)w zOM_ix%fn;`lI4ZVhI@jWp-c`uOyDsGkbTJQZzg9RCKr$v4p2}8`9tE!jfcq{B*+%* z=;8wIoG^LvFnNK5Sb`nFjX@?K9wuLq04GQQ6vN=y_2*#<0Ew~(I|leb(?$>vQ!q%3 zHQ3eF1sqPHJWOFA5w>6tS4VJzmnnjWDH0^a671;?_DeJmQw&Ie6C@BH;190Znc{eu z;z6QZ!9Je8uCOLLQz8#j5=fXO*bm%IVM^g)N(BjUf&}2o(s`INK%!g_QBZ~kMMf46 zQ#MGLCDK*96NuYJiGB z`V34>JWS0X5l(P$Lu*8)RvxA{kSGsC)G0J11Uvx6)WO5l36g*+hcr8wx_Ov-K%%@5 z<%lYUsgH-LA0)#Km4OZiF-_!QnuH_{t8191@Gwn97Kc_gOw)OoW`M*6fh#2Osx?g*-cnHKOcEd+^hfkon-9l?Djro}u=OF+T` z2w_B7wTy>pIY^Q{IMgS=BNS}TN*<xUJ1}oQLTI zNPrt8;OYl=-6~h zC4g%@OxHmYTo4IZ{NLnZx`hyiNB1<-K-Ok`VlR*>2bO$r#Kuj+%Qy9eb z1v5FcS++3*XiBh7pUuFs5oCbsG6oEJkhnHf9AYp;A4pseYO(n;hAfb|5ZmH)b~1!8 zGVElCU}V_F5VwsX#f$?*D8r0XltYv=WwII9Ziej0?F_kA+@f5f9Bes@7(^twS+_Cd z&0^pNyKXsyAVg*f1HxL9WejQ{>mWXohMB=3$pO;JvH+?S6i3XUP-iG&kYQk8;Ah}w z5MU5y5M+>K5Moeb5Mj_@5MxMS5NGINkYt$1Aj>d=L5^W2gCfHk1|^1#45|!A7}OX} zGH5b9VbEgu&Y;c6&Y;7{&!EdF!JyBm#bCgw&tS-C&0xgnz+lE0%wWzK!(hRf#$d^q z&0qsg4+RX|3=E7p(DVRe6)_YuFfs@;MlzHzlrk_eNHPX9lrfYuFf%AIdNEWmlryk0 zXfV1kR5EBWurqvT@MNfBsAk|`WM{Bss9~sP;AG@yFl4A@sAk||lwiBF#i-8F=2LVaPjIs<&;7qb>2ScOIHij0xRSaOTfq{Wx0s{lXWCjKX7X}7~ z3^ zb}>v~aAIHrhc-6@r-mXU1PX94urf45f=cu^12d>N;4a_9FfsBN1Ivc+9SoEA?cws) z+Qcw@8$%0=|8fSFaIH-Yv$ip`2&BPyb3wce7;nKgh897FqcHAbkR%6;w+zIShVfQ{ zm9B?z*MPZ)VBGa!?lu^A6G*E8jJFlUONa4xfOyp~-fpnQZWwnTNKy~RI|$-wz<5W% zN|(d9$3c?zFy1K;F9^mv3s!mr#=QWNjD_)h!IG0cB8+Pb=1zcdy};Z_Fz#iL zN#-!#H4rZt#=8ktx*5j31LkgmaqolFX2N)nKs-Sh@98#%7I?6~07<#Pq+Wwf*$v~q z19K0+xF5mX<1p?QkX9QQ?>mU62;=<%@nm7VzaU-~lm|+|EdrG=9y3VJ3dUmtTQM8P zi@f5+v9D{LH zK$3AVo;rvZ594WVV`yQAadbga5-^?th^GVN8H3H-1>>55xlJ&xB}i=;jAsMlnZS5< zV5NItTt_f>0gUScQkx3nfzphF4lx#JW#PFpaA1RO0^R(E~Hf32;+iEH9>||FfO=Q zGllWM#hM|E2QJoXpgbl9P#{FWc;I493dRE!YXU|v9;8%T4C6vdwXHBNs8kbBg7H9w znt(El2QJf8VLWh|CI{nz$}~ZSg)lC-P>Y7~Acfja7#Ccq$-sEvLM~8FfOQE6YzrZK*gGX4~z#c)qG(*aH(bi535XQ>{@oZtd91t%O#>)rsL}0uk5RV7OD+TemV7v+tPZ!3k2Jxz3 zyt-`+Evzt3BS@+g#%lrb{9wFxusd5}+%Ax035?eZ;<>|k6F|IT7;iF&R|Mlt0~@mg z#+?b~Ho~}bz}&+y?tCzJ3yix6WKsx>w-hYd4CAf-Y&4@3K(}UNKzigI{=pKf^iRnBw@7y(=iaw5hiyM#4CjH&VV&8 zgK^J;xh*j6C6L+z81E{G=LzH80P*r+yxSn28H{%i#LI*69)fr(Fy0do&l<*i4&tdn zc#)eKCT?Ij%^<)a$soh@ib0k^ok5G~6@xZ|DT4*mD+Wsj7Y28xR}3BuK@6cxuNcA@ z5*U)1UNNLF@v>}EK|aFXd2!zqR<4A+@nG2CEy#PF2q6~i-zj|^X!UNL-S_|M41^oo(0k(W_` z=@p|OqYR@w(=MlD8NrdN!5jFyZxOs^Pi89f-inO-saForWmF}-4pW=vzuWO~Jz z#aO~v&h(10g0YFQmFX2@8{JT+H-}aS7u(#*Iv`7&kHQVcgI3itzyB zNyalwuNcoVUT3_;^osE|<1@yWOs^PUF@9zI!SsspCld=3JJTyB4kjTcQKnZ+VoVB5 z%1p1ARG9Rb44Gar88O)~*)zRja$xde@@0C(Qzg?Y zrYfdZrVgf8Or1}hSG;SIoK070lI4ub69?+nKwV zUNLtwPi3CL^on^V^J3;@Os|-iGjC+x!t{!HEAxKlLrkxj4>O--zQFW~`6BZj=KD;q zm>)2|W`4)?iupbBFXq2YubBU_aIkPQy<*{E5oeKNdc`8mqQ;`h^om7`#gxT@=@pA5 ziwlc8(<>GamLQf;rdKRsEQu^BOs`l{S@Kzmm|n3Iv(&OQFuh`FWa(k)XL`jlfn^rU zT&7nn^H^4}tY&(}vW8_V%MPYjEIU~avm9f3#d4hG63bPlS1i|99j#ZOYhv^loE~^ErHPb6r8&-E#FQ!+l z-mIal5lpXGBUw{e)0tkeX0R5smNC6zEoW_HZDD%F+R8eCbu!Z{)+wy>SQj$AVqL_# zhIKvDE7lFHyIA)!y<*+RdV=*d(<|09tk+m?GQDEG#rlNxInyiF7p$LHzcRgI{l>^DiHU&0qHa(_SZ2D|gY_?3V*zDLm*?gE@vH7w^uthVy zVvAu*XUk%G#g@%h##YJnimi&Rg{__G6+d8(5Ot08B zvF%~o&-9Az0NZJ{b4;(;&a>TOyUX;7?H=1pwl_?#*xs^zXZywUitRT$D?10%D|SwH zVRkX5SM1{KitH*(uh>=D_1TS>Ua=dq+p;?_y<&G{_hI*Edc_{V9?c%d^ol*6J(E3$ z=@ok}dpUa*(<}CB_Ez=|rdRBp?33B2F}-4+&c29!Dbp+VW$YW+H#5Cr-@?A1{SebD z_QULF*)K4?V!z0KoBbZsEB5>BFWKKPy<&gM{)7ED(<}Br9PAuiOs_b&IYc=mm|k&6 zawv1CF}>nY=P=|jVS2@3%3;sp#Po{8nZuVOfaw)SAV)Mu9Mda~c#bTNT&7nXc^nlS z)l9EAYB<_BI+?I1@RuIrEraaprSYa8@(D;;i9p zyR7E6y35i#eAuz2aQXxsh`V(<{!coclQsF}>nE%z2jc0@Ewbi=4MP z?=ijNywCZH^DWaW&Uc(YIsY)d;{40S!Ntw=ii?L!oJ)%76_+%ZDwhV+D=tkg6E1V6 zS6micPF$``uejW}0=R;iUU7wR#c?Gvz2ZvZ%Hhgqdc{@1Rn1k$^opyVtCOpT=@nNm z*9@-NOs}}+a4q9n$@GeA71vg-9Zavdc5)r&I>z*h>p0g%t}9HhxUO>D=X%8Sit91g zJFbsRued&O{pDt0dd1Di&CSin^opCGTasIb=@qvuw>q~L(<^RmZc}axrdQmS+|Jx? zOs}}zxdXXFm|k&*a>sKgF}>nW=Fa6VV0r}|KSCb)Wny3ejRvu>F;4ejXL|FWL70J& zo#_pTc*Wqu&IBcV;ViHin2R95Vh92(K?E194vj$529`yLdBdFnmOu~)CD>R9b!aS{ ziV+eBE5Tw21HfD`flUl7fglh{z$~x?n1x0lB)}{%0agNLfeD0zz!G2rEP-GlxL`3b zfhLCFf>|UHVDoSiIE_Nnfm0n=0-+epMI*qnU@-&>%mou*F)#t<;v}#s0gE9BuwF11 zjRof7ClC<@R);VJ%ta7j2{ZyM3l;;j&iof-NUMJw3IEkwFHVJ3!&*lb>$Q$iQZknU`5&$H>5}p&7==z~Y>rlFG%v z%pl6cAjlxZ$iVNDnV0HUnwykb6q1;flgh{-8a@P*khNwQCj%pcA`b&U zg8(~&G9!Z;4#UwB5(k4SBLf#C`RP^W=5R46F{pzq)?j1^A;w}KaAM9$%uCk~E-A{) zOSi@rDzGSkI8%#52qJ|BM3RTWn8AdRK_ES~1d^kC6Y~-9A_Q| zUIspP23JM~a{}%`_y*l97Y0#~-#mC2xEXjriNTA9!5fq{xN`CnQy_^46mh;h41Ns$ zkT8dcLdzyb1`X6OFD=Q;(T5~3)KbivgCUTSfj1SLA>tuL5*I@-Lnu2#2qS|EQY_;% zf`=iDA)JwcD?PQuDL+3aH8GEoK}-WPNk(Z#aWX_QM6)wQF)~OanVeddnpdLl3L;fP zDhpD17-AS=85y_(d>kWPgW`St!(15|WRa62x(;hjhIocVc7_B-26-F?2NY%I7iE@I z@-QSZBr`Iw`Q;boCgw0QDB>~~rooz}TE&`WDkqp^93^|~%6o7`MldDU-t6zv~5GW?{ zco_0QlDw{dA)X0G70B#rG$Wzq z8g3&&I%|0t>KN)788}MvA?g_!L^Lq9Sc6LTMjnPHhGs?vmdw1gd`1RQWcNcfTWf}K zFtjoV z9i2ls7!~$rA%9)?%0`VLN!!$+)P6e2Sj0{}C`K3k4scxB|+E^I1M%4o) z6-EXg&%C_UBIlgM;^Nd|c81xE3}V=GA|nF_Ecr4ruz>PAgCYYX12Y2y0~-Sas7_)4 z0d@us5Ctlg!8A7m518g<-~-eA3<3-c49pCSphg1&BZDvl1A{&TBLgGI46W@9A{!YP z7?>Euz{Y|Exf#S67#MgU3K%39BpDbO7#XA(gdmz3zcR2fFflMNhH33)kdD;a&LF#$ zK|yObgHoiHkc!q828HbmYFimJwYD*6?_|(tWbo12&0q>rXTFueLTfjJ6^L!KmBChP zH-kNh?YNb}NozNQOXPM2x2+8BT3Z-2w=sBXZDa5e3SimB5Hyn^SbGyggw_@Y+f58{ zT00q1SQ)f8F=U|&!?2s3Ayx7>gSR9DBf}I}5@7HIrzZvmX>@-~MezqDRdIn*3xhF( u6oU!aPDsj " + Color.formatColors(config.getString("chestplate_burn_message", "&4You won't make me disappear, until I make you."))); + player.setFireTicks(100); + } + } + } + } +} diff --git a/src/gd/rf/adrianvictor/devilwithin/CursesPlayerListener.java b/src/gd/rf/adrianvictor/devilwithin/CursesPlayerListener.java new file mode 100644 index 0000000..0f80ebe --- /dev/null +++ b/src/gd/rf/adrianvictor/devilwithin/CursesPlayerListener.java @@ -0,0 +1,66 @@ +package gd.rf.adrianvictor.devilwithin; + +import java.util.Random; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.player.PlayerBedEnterEvent; +import org.bukkit.event.player.PlayerListener; +import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.util.Vector; + +import gd.rf.adrianvictor.lib.Color; +import gd.rf.adrianvictor.lib.Text; + +public class CursesPlayerListener extends PlayerListener { + + org.bukkit.util.config.Configuration config; + + public CursesPlayerListener(JavaPlugin plugin) { + config = plugin.getConfiguration(); + } + + // curse for Leggings. slows player down 50% of the onPlayerMove events to a random speed. + public void onPlayerMove(PlayerMoveEvent event) { + Player player = event.getPlayer(); + Random rand = new Random(); + + ItemStack leggings = player.getInventory().getLeggings(); + + if (leggings != null && leggings.getType() == Material.CHAINMAIL_LEGGINGS) { + short maxDurability = leggings.getType().getMaxDurability(); + short damage = leggings.getDurability(); + short remainingDurability = (short) (maxDurability - damage); + + if (remainingDurability < (maxDurability / 3)) { + if (rand.nextBoolean()) { + Vector velocity = player.getVelocity(); + double slowFactor = 0.3 + (rand.nextDouble() * 0.4); + player.setVelocity(velocity.multiply(slowFactor)); + } + } + } + } + + // curse for Helmet. Player cannot sleep. + public void onPlayerBedEnter(PlayerBedEnterEvent event) { + Player player = event.getPlayer(); + ItemStack helmet = player.getInventory().getHelmet(); + + if (helmet != null && helmet.getType() == Material.CHAINMAIL_HELMET) { + short maxDurability = helmet.getType().getMaxDurability(); + short damage = helmet.getDurability(); + short remainingDurability = (short) (maxDurability - damage); + + if (remainingDurability < (maxDurability / 3)) { + if (config.getBoolean("enable_insomnia_player_message_broadcast", true)) { + player.chat(config.getString("insomnia_player_message", "I can't sleep.")); + } + player.sendMessage("<" + Text.generateRandomString(5) + "> " + Color.formatColors(config.getString("insomnia_message", "&4Can't sleep. Can't breathe. Won't get no piece with me."))); + event.setCancelled(true); + } + } + } +} diff --git a/src/gd/rf/adrianvictor/devilwithin/Enchanting.java b/src/gd/rf/adrianvictor/devilwithin/Enchanting.java new file mode 100644 index 0000000..43d8859 --- /dev/null +++ b/src/gd/rf/adrianvictor/devilwithin/Enchanting.java @@ -0,0 +1,75 @@ +package gd.rf.adrianvictor.devilwithin; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerListener; +import org.bukkit.inventory.ItemStack; +import org.bukkit.plugin.java.JavaPlugin; + +import gd.rf.adrianvictor.lib.Color; +import gd.rf.adrianvictor.lib.ConfigurationEx; +import gd.rf.adrianvictor.lib.Text; + +public class Enchanting extends PlayerListener { + + int configEnchantBlockID; + String helmetMessage; + String chestplateMessage; + String leggingsMessage; + String bootsMessage; + ConfigurationEx config; + + public Enchanting(JavaPlugin plugin) { + configEnchantBlockID = plugin.getConfiguration().getInt("enchant_block", 57); + helmetMessage = plugin.getConfiguration().getString("helmet_message", "&4I’m underneath your skin."); + chestplateMessage = plugin.getConfiguration().getString("chestplate_message", "&4I'm gonna make you suffer."); + leggingsMessage = plugin.getConfiguration().getString("leggings_message", "&4You'll never know what hit you."); + bootsMessage = plugin.getConfiguration().getString("boots_message", "&4Look what you made of me."); + } + + + @Override + public void onPlayerInteract(PlayerInteractEvent event) { + if (event.getClickedBlock() == null) { + return; + } + Material material = event.getClickedBlock().getType(); + if (material == null) { return; } + + ItemStack item = event.getItem(); + if (item == null) { return; } + + short durability = item.getDurability(); + Player player = event.getPlayer(); + if (player == null) { return; } + + Material itemMaterial = player.getItemInHand().getType(); + if (material == Material.getMaterial(configEnchantBlockID)) { + switch(itemMaterial) { + case DIAMOND_HELMET: + item.setType(Material.CHAINMAIL_HELMET); + item.setDurability(durability); + player.sendMessage("<" + Text.generateRandomString(5) + "> " + Color.formatColors(helmetMessage)); + break; + case DIAMOND_CHESTPLATE: + item.setType(Material.CHAINMAIL_CHESTPLATE); + item.setDurability(durability); + player.sendMessage("<" + Text.generateRandomString(5) + "> " + Color.formatColors(chestplateMessage)); + break; + case DIAMOND_LEGGINGS: + item.setType(Material.CHAINMAIL_LEGGINGS); + item.setDurability(durability); + player.sendMessage("<" + Text.generateRandomString(5) + "> " + Color.formatColors(leggingsMessage)); + break; + case DIAMOND_BOOTS: + item.setType(Material.CHAINMAIL_BOOTS); + item.setDurability(durability); + player.sendMessage("<" + Text.generateRandomString(5) + "> " + Color.formatColors(bootsMessage)); + break; + default: + break; + } + } + } +} diff --git a/src/gd/rf/adrianvictor/devilwithin/EnchantingEntityListener.java b/src/gd/rf/adrianvictor/devilwithin/EnchantingEntityListener.java new file mode 100644 index 0000000..e5b05e4 --- /dev/null +++ b/src/gd/rf/adrianvictor/devilwithin/EnchantingEntityListener.java @@ -0,0 +1,76 @@ +package gd.rf.adrianvictor.devilwithin; + +import java.util.Random; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.entity.EntityListener; + +public class EnchantingEntityListener extends EntityListener { + + @Override + public void onEntityDamage(EntityDamageEvent event) { + if (!(event.getEntity() instanceof Player)) return; + Player player = (Player) event.getEntity(); + double damage = event.getDamage(); + double health = player.getHealth(); + + DamageCause cause = event.getCause(); + + if ((cause == DamageCause.FALL || cause == DamageCause.DROWNING || cause == DamageCause.FIRE_TICK || cause == DamageCause.FIRE || cause == DamageCause.CONTACT || cause == DamageCause.LAVA || cause == DamageCause.SUFFOCATION) && + (isWearing(player, Material.CHAINMAIL_HELMET) && isWearing(player, Material.CHAINMAIL_CHESTPLATE) && isWearing(player, Material.CHAINMAIL_LEGGINGS) && isWearing(player, Material.CHAINMAIL_BOOTS))) + { + event.setCancelled(true); + } + + // **1. If damage is lethal, allow it** + if (damage >= health) { + return; + } + + if (cause == DamageCause.FALL && isWearing(player, Material.CHAINMAIL_BOOTS)) { + event.setCancelled(true); + } + + if (cause == DamageCause.DROWNING && isWearing(player, Material.CHAINMAIL_HELMET)) { + event.setCancelled(true); + } + + if ((cause == DamageCause.FIRE_TICK || cause == DamageCause.LAVA) && isWearing(player, Material.CHAINMAIL_CHESTPLATE)) { + short maxDurability = player.getInventory().getChestplate().getType().getMaxDurability(); + short armorDamage = player.getInventory().getChestplate().getDurability(); + short remainingDurability = (short) (maxDurability - armorDamage); + Random random = new Random(); + + if ((remainingDurability < (maxDurability / 3)) && random.nextInt(2) == 0) { + event.setCancelled(true); + } else if (remainingDurability > (maxDurability / 3)) { + event.setCancelled(true); + } + } + + if ((cause == DamageCause.CONTACT) && isWearing(player, Material.CHAINMAIL_LEGGINGS)) { + Random random = new Random(); + if (random.nextInt(2) == 1) { + event.setCancelled(true); + } + } + } + + private boolean isWearing(Player player, Material piece) { + switch (piece) { + case CHAINMAIL_BOOTS: + return player.getInventory().getBoots() != null && player.getInventory().getBoots().getType() == piece; + case CHAINMAIL_HELMET: + return player.getInventory().getHelmet() != null && player.getInventory().getHelmet().getType() == piece; + case CHAINMAIL_CHESTPLATE: + return player.getInventory().getChestplate() != null && player.getInventory().getChestplate().getType() == piece; + case CHAINMAIL_LEGGINGS: + return player.getInventory().getLeggings() != null && player.getInventory().getLeggings().getType() == piece; + default: + return false; + } + } +} diff --git a/src/gd/rf/adrianvictor/devilwithin/TheDevilWithin.java b/src/gd/rf/adrianvictor/devilwithin/TheDevilWithin.java new file mode 100644 index 0000000..25adaf6 --- /dev/null +++ b/src/gd/rf/adrianvictor/devilwithin/TheDevilWithin.java @@ -0,0 +1,54 @@ +package gd.rf.adrianvictor.devilwithin; + +import org.bukkit.event.Event.Priority; +import org.bukkit.event.Event.Type; +import org.bukkit.plugin.PluginManager; +import org.bukkit.plugin.java.JavaPlugin; +import gd.rf.adrianvictor.lib.ConfigurationEx; +import gd.rf.adrianvictor.lib.Log; +import gd.rf.adrianvictor.lib.logger; + +public class TheDevilWithin extends JavaPlugin { + + ConfigurationEx config; + Enchanting enchanting; + CursesPlayerListener cursesPL; + EnchantingEntityListener enchantingEL; + CursesEntityListener cursesEL; + Log logger; + + @Override + public void onEnable() { + logger = new Log(this); + config = new ConfigurationEx(this, "config.yml", logger); + PluginManager mgr = this.getServer().getPluginManager(); + enchanting = new Enchanting(this); + cursesPL = new CursesPlayerListener(this); + cursesEL = new CursesEntityListener(this); + enchantingEL = new EnchantingEntityListener(); + config.loadConfig(); + if (this.getConfiguration().getBoolean("enable_curses", true)) { + mgr.registerEvent(Type.PLAYER_MOVE, cursesPL, Priority.Normal, this); + mgr.registerEvent(Type.PLAYER_BED_ENTER, cursesPL, Priority.Normal, this); + mgr.registerEvent(Type.ENTITY_DAMAGE, cursesEL, Priority.Normal, this); + logger.info(this + " curses are enabled"); + } else { + logger.info(this + " curses are disabled by the config"); + } + mgr.registerEvent(Type.ENTITY_DAMAGE, enchantingEL, Priority.Normal, this); + if (this.getConfiguration().getBoolean("enable_enchanting", true)) { + mgr.registerEvent(Type.PLAYER_INTERACT, enchanting, Priority.Normal, this); + logger.info(this + " enchanting is enabled"); + + } else { + logger.info(this + " enchanting is disabled by the config"); + } + logger.info(this + " started"); + } + + @Override + public void onDisable() { + logger.info(this + " disabled"); + } + +}