From afcf62b95bc83b512e8865aaa04f46602d1db1ee Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Mon, 3 Mar 2014 21:11:50 -0400 Subject: [PATCH 01/20] Minor Change Renamed the Rift Blade texture to change its capitalization under Windows --- ...item.ItemRiftBlade.png => itemRiftBladeTEMP.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/assets/dimdoors/textures/items/{item.ItemRiftBlade.png => itemRiftBladeTEMP.png} (100%) diff --git a/src/main/resources/assets/dimdoors/textures/items/item.ItemRiftBlade.png b/src/main/resources/assets/dimdoors/textures/items/itemRiftBladeTEMP.png similarity index 100% rename from src/main/resources/assets/dimdoors/textures/items/item.ItemRiftBlade.png rename to src/main/resources/assets/dimdoors/textures/items/itemRiftBladeTEMP.png From 7e964adb7a9ff63cf888b010f148a9d8d0817369 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Mon, 3 Mar 2014 21:16:44 -0400 Subject: [PATCH 02/20] Removed Redundant Textures Removed copies of item textures that simply had other names. Some textures are broken now. I'll fix that in a moment. --- .../mod_pocketDim/items/itemRiftRemover.java | 1 + .../dimdoors/textures/items/dimDoorexit.png | Bin 194 -> 0 bytes .../textures/items/item.dimDoorexit.png | Bin 194 -> 0 bytes .../textures/items/item.itemChaosDoor.png | Bin 217 -> 0 bytes .../textures/items/item.itemDimDoor.png | Bin 189 -> 0 bytes .../textures/items/item.itemLinkSignature.png | Bin 205 -> 0 bytes .../textures/items/item.itemRiftRemover.png | Bin 205 -> 0 bytes .../textures/items/item.itemStableFabric.png | Bin 173 -> 0 bytes .../textures/items/itemRiftBladeTEMP.png | Bin 210 -> 0 bytes .../textures/items/itemWorldThread.png | Bin 3277 -> 438 bytes 10 files changed, 1 insertion(+) delete mode 100644 src/main/resources/assets/dimdoors/textures/items/dimDoorexit.png delete mode 100644 src/main/resources/assets/dimdoors/textures/items/item.dimDoorexit.png delete mode 100644 src/main/resources/assets/dimdoors/textures/items/item.itemChaosDoor.png delete mode 100644 src/main/resources/assets/dimdoors/textures/items/item.itemDimDoor.png delete mode 100644 src/main/resources/assets/dimdoors/textures/items/item.itemLinkSignature.png delete mode 100644 src/main/resources/assets/dimdoors/textures/items/item.itemRiftRemover.png delete mode 100644 src/main/resources/assets/dimdoors/textures/items/item.itemStableFabric.png delete mode 100644 src/main/resources/assets/dimdoors/textures/items/itemRiftBladeTEMP.png diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java b/src/main/java/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java index 119e578..ef56516 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java @@ -32,6 +32,7 @@ public class itemRiftRemover extends Item @Override public void registerIcons(IconRegister par1IconRegister) { + System.out.println(mod_pocketDim.modid + ":" + this.getUnlocalizedName()); this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName()); } diff --git a/src/main/resources/assets/dimdoors/textures/items/dimDoorexit.png b/src/main/resources/assets/dimdoors/textures/items/dimDoorexit.png deleted file mode 100644 index 225327cc08ce0423a4973cee68bde89d2d845996..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`ot`d^Ar-fh6C^?s>bl?8J6RYX z`C%W&Tyci?-|RDQe&`E`b6jIsv~>06gO6M!87|%V{PbddUcCASHZyN$1L-scM`n$0 zOefSP^q$G$O5jzHI>Nq_=ScXJC&%&`PV86URaky_&w}DIW!b$9MM@l#a~TwU40trY s9XcSzFiC~&vB`mpE+6d;B_jD5_U_SJ#{19mG|*8Dp00i_>zopr00Wdp761SM diff --git a/src/main/resources/assets/dimdoors/textures/items/item.dimDoorexit.png b/src/main/resources/assets/dimdoors/textures/items/item.dimDoorexit.png deleted file mode 100644 index 225327cc08ce0423a4973cee68bde89d2d845996..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`ot`d^Ar-fh6C^?s>bl?8J6RYX z`C%W&Tyci?-|RDQe&`E`b6jIsv~>06gO6M!87|%V{PbddUcCASHZyN$1L-scM`n$0 zOefSP^q$G$O5jzHI>Nq_=ScXJC&%&`PV86URaky_&w}DIW!b$9MM@l#a~TwU40trY s9XcSzFiC~&vB`mpE+6d;B_jD5_U_SJ#{19mG|*8Dp00i_>zopr00Wdp761SM diff --git a/src/main/resources/assets/dimdoors/textures/items/item.itemChaosDoor.png b/src/main/resources/assets/dimdoors/textures/items/item.itemChaosDoor.png deleted file mode 100644 index 142ed3666236ee160af5a880009355922c3f029b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217 zcmV;~04D#5P)NklVs6CKG1>Omo{IKd^@B z7qkCYYzhX86J-F!UWlLR{J;Bj_N6|e?<54ryxhok-%uk{7Ao#sL(FVNfof?+WDy@1yMkR&k}rvbUSx&Mj5RLi{pf2gcH Tvwg;V00000NkvXXu0mjfG8SSW diff --git a/src/main/resources/assets/dimdoors/textures/items/item.itemDimDoor.png b/src/main/resources/assets/dimdoors/textures/items/item.itemDimDoor.png deleted file mode 100644 index cff615cde33ccbfb72fd326320fe183dbb308a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EuJopAr-fh6C^?&yt%pgKj*`h z!OQ<0&t~Y~d9Z%+OxgdekC+ZhIczB@HH(;|!R#=rdY{d&^KW0XTsx4K$&q%LMW{8)Z%UiNoJR^_cpn=4nxC7Y? o9+M<`E;rn{bLan&gcMtb4cW6|@{aIS1Kq>m>FVdQ&MBb@0Gbv``2YX_ diff --git a/src/main/resources/assets/dimdoors/textures/items/item.itemLinkSignature.png b/src/main/resources/assets/dimdoors/textures/items/item.itemLinkSignature.png deleted file mode 100644 index 879d096a9490b301e23c53d35a95befe47b18361..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Q#@T9Ln>}1Cpa+w|Nmc|GkA$) z9>b;sUtV7R-)vxZ^v06_9tO{KaeJkD3MCmPIh(N@X2|JskVrGwrM=;o?6QchOP}m_ zh*6l)Ch23qlOVCg^Z6S$5$6sr7l~)zN|~~m5(T7FI6T=7IY1bzR0WW#>eo!tV3E(NOcd;eGHzielF{r5}E*> C21gtK diff --git a/src/main/resources/assets/dimdoors/textures/items/item.itemRiftRemover.png b/src/main/resources/assets/dimdoors/textures/items/item.itemRiftRemover.png deleted file mode 100644 index 7088d27176ba76b9683eee4ffd11dcb0f5125cdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Q#@T9Ln>}1|M>skp4n1@?}RBs zo)TJMHS#R}E6tpDU}m$ zn}9ow!@HL4n8h^6s{> zbq>kz&H5fV@jYUhl6QdVqQb+5w)tY~9~R`-HFR8%T3Yp_rm4MjW2TtFowLEa9hzSL z6^~Ipad6Rr-0fU-oNwBh|8#n7(76!6>(11s=|97L)5QXJfgdxE*K$9MnDF*M!(GOM zcYHTY-g01jeXW}34(_(eOz}65Ty@%@Q}EU+fUnQ(LGab4Il{A=^OB|~8yp5YlEKr} K&t;ucLK6TYZ&)e- diff --git a/src/main/resources/assets/dimdoors/textures/items/itemWorldThread.png b/src/main/resources/assets/dimdoors/textures/items/itemWorldThread.png index 8af4bf8f0f7d34ab9ce91bc9d5bbfb51d4d0f3a3..d3f1e9d76b928d9838eb6be9fe1dc636ad66656d 100644 GIT binary patch literal 438 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{XiaP zfk$L90|Vb-5N14{zaj-FIL*_=F+}5h>%@z^hZT5S&WDztQ1f^vk}@af;!3Sp^Oqvm z`J0=$yc|6w=FUHVtmSoSwC%g(Y0KU&im{F2Sj7^@sS!SxRXyZEfXc=z`sx~)+9~U1 z?R4D9e4s7qfb;pB&&|_CZ(q5^qkCCOv^>0O!KxS^^}sDzFO)XzkzLiDGv}3cbJA`; zk?5XTy_dRg{+WGHQ*7ej-|zIFhM(?H>XeEEx=^*mHKHUXu_Vl&DZ7#LcaSXvnyXagAr2H&ndUxlI}H$NpatrE9}_U?EwpavKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0005_NklnrIAyxZ6EFXD?lD55_NG zVghctw17}3mzGkHtpWXD`*Hq0VPYtP50lKp%x@-{Oe#r|)c?eyxIh^DxcU()d&r#| z-4CZYdWW#m#ZIpvwI;r?eKR1c-TPO$GucCx_fSR?&uF3a7LyYVY-5L8rv~Ldc6JLp z6Ct&Aq`pJd?BKm05Xj-b0k7O+;pHAG*T5^Z2rE65d5mwzxZ-HqO_6K2*~K zRDKtkjhK4&neg>7?#wB{Ok4@8!?7^@xUHFzSxr-&jLr8c1W0+Ph=i z=>hff2_o|isWqr&z9RBFSZ@xPSC?bg05{i0q?ZXxo4Dl;(ri=9t>Wve1o?HW=Mhfn zfItqZ$+HL70BIhg^d>SJ;iQ+4T7)(61);6r75DKF)smg^n Date: Mon, 3 Mar 2014 21:26:46 -0400 Subject: [PATCH 03/20] Minor Change Messing with the Rift Blade texture's name again --- .../{ItemRiftBlade.png => ItemRiftBladeTmp.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/resources/assets/dimdoors/textures/items/{ItemRiftBlade.png => ItemRiftBladeTmp.png} (100%) diff --git a/src/main/resources/assets/dimdoors/textures/items/ItemRiftBlade.png b/src/main/resources/assets/dimdoors/textures/items/ItemRiftBladeTmp.png similarity index 100% rename from src/main/resources/assets/dimdoors/textures/items/ItemRiftBlade.png rename to src/main/resources/assets/dimdoors/textures/items/ItemRiftBladeTmp.png From a920a7d65b4020bb1abe9549bb7a074fe150e954 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Mon, 3 Mar 2014 21:44:04 -0400 Subject: [PATCH 04/20] Fixed Missing Textures and Changed World Thread Fixed the code for retrieving textures for ItemRiftBlade, ItemRiftSignature, and ItemRiftRemover. Renamed Rift Blade item texture again due to capitalization issues. Replaced World Thread texture with a dark variant of MC's String - we can switch to another texture later. --- .../mod_pocketDim/items/ItemRiftBlade.java | 2 +- .../mod_pocketDim/items/ItemRiftSignature.java | 2 +- .../mod_pocketDim/items/itemRiftRemover.java | 3 +-- .../{ItemRiftBladeTmp.png => ItemRiftBlade.png} | Bin .../dimdoors/textures/items/itemWorldThread.png | Bin 438 -> 234 bytes 5 files changed, 3 insertions(+), 4 deletions(-) rename src/main/resources/assets/dimdoors/textures/items/{ItemRiftBladeTmp.png => ItemRiftBlade.png} (100%) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemRiftBlade.java b/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemRiftBlade.java index 86b1602..ceee388 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemRiftBlade.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemRiftBlade.java @@ -201,7 +201,7 @@ public class ItemRiftBlade extends ItemSword @Override public void registerIcons(IconRegister par1IconRegister) { - this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName()); + this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName().replace("item.", "")); } /** diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java b/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java index 9066fd2..6f5c5b8 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java @@ -42,7 +42,7 @@ public class ItemRiftSignature extends Item public void registerIcons(IconRegister par1IconRegister) { - this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName()); + this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName().replace("item.", "")); } @Override diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java b/src/main/java/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java index ef56516..c95b472 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java @@ -32,8 +32,7 @@ public class itemRiftRemover extends Item @Override public void registerIcons(IconRegister par1IconRegister) { - System.out.println(mod_pocketDim.modid + ":" + this.getUnlocalizedName()); - this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName()); + this.itemIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName().replace("item.", "")); } @Override diff --git a/src/main/resources/assets/dimdoors/textures/items/ItemRiftBladeTmp.png b/src/main/resources/assets/dimdoors/textures/items/ItemRiftBlade.png similarity index 100% rename from src/main/resources/assets/dimdoors/textures/items/ItemRiftBladeTmp.png rename to src/main/resources/assets/dimdoors/textures/items/ItemRiftBlade.png diff --git a/src/main/resources/assets/dimdoors/textures/items/itemWorldThread.png b/src/main/resources/assets/dimdoors/textures/items/itemWorldThread.png index d3f1e9d76b928d9838eb6be9fe1dc636ad66656d..f0fef4a860246176b41221171ea1fce18e8f2fd1 100644 GIT binary patch delta 217 zcmV;~04D#o1L^^g8Gi-<001BJ|6u?C0C-76K~#9!y;55az#s_Y56;5<@5kaIOQ$H# zEh8aD0&RH^{beFz+r_F{imkq{*tb=j?96Pdazl``jVd)`iIw=E{9lq>cEH-la7_Sq zc?%S+6%#B-FpQ68flS>zu+7Z)9b1 Ts0M%T00000NkvXXu0mjf(h^)7 literal 438 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{XiaP zfk$L90|Vb-5N14{zaj-FIL*_=F+}5h>%@z^hZT5S&WDztQ1f^vk}@af;!3Sp^Oqvm z`J0=$yc|6w=FUHVtmSoSwC%g(Y0KU&im{F2Sj7^@sS!SxRXyZEfXc=z`sx~)+9~U1 z?R4D9e4s7qfb;pB&&|_CZ(q5^qkCCOv^>0O!KxS^^}sDzFO)XzkzLiDGv}3cbJA`; zk?5XTy_dRg{+WGHQ*7ej-|zIFhM(?H>XeEEx=^*mHKHUXu_Vl&DZ7#LcaSXvnyXagAr2H&ndUxlI}H$NpatrE9}_U?Ewpav Date: Tue, 4 Mar 2014 03:54:46 -0400 Subject: [PATCH 05/20] Changes to Rift Immunity Changed rifts to consider block blast resistance instead of block hardness. Some mods offer defensive blocks that stop explosions but have low hardness. This addresses that issue. The minimum resistance allows obsidian to resist rifts. --- .../mod_pocketDim/blocks/BlockRift.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockRift.java b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockRift.java index 713e8bc..eeda361 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockRift.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockRift.java @@ -36,7 +36,7 @@ import cpw.mods.fml.relauncher.SideOnly; public class BlockRift extends Block implements ITileEntityProvider { - private static final float MIN_IMMUNE_HARDNESS = 200.0F; + private static final float MIN_IMMUNE_RESISTANCE = 5000.0F; private static final int BLOCK_DESTRUCTION_RANGE = 4; private static final int BLOCK_DESTRUCTION_VOLUME = (int) Math.pow(2 * BLOCK_DESTRUCTION_RANGE + 1, 3); private static final int MAX_BLOCK_SEARCH_CHANCE = 100; @@ -65,11 +65,11 @@ public class BlockRift extends Block implements ITileEntityProvider this.blocksImmuneToRift.add(properties.GoldenDimensionalDoorID); this.blocksImmuneToRift.add(properties.GoldenDoorID); + this.blocksImmuneToRift.add(Block.blockLapis.blockID); this.blocksImmuneToRift.add(Block.blockIron.blockID); + this.blocksImmuneToRift.add(Block.blockGold.blockID); this.blocksImmuneToRift.add(Block.blockDiamond.blockID); this.blocksImmuneToRift.add(Block.blockEmerald.blockID); - this.blocksImmuneToRift.add(Block.blockGold.blockID); - this.blocksImmuneToRift.add(Block.blockLapis.blockID); } @Override @@ -362,8 +362,13 @@ public class BlockRift extends Block implements ITileEntityProvider Block block = Block.blocksList[world.getBlockId(x, y, z)]; if (block != null) { - float hardness = block.getBlockHardness(world, x, y, z); - return (hardness < 0 || hardness >= MIN_IMMUNE_HARDNESS || blocksImmuneToRift.contains(block.blockID)); + // SenseiKiwi: I've switched to using the block's blast resistance instead of its + // hardness since most defensive blocks are meant to defend against explosions and + // may have low hardness to make them easier to build with. However, block.getExplosionResistance() + // is designed to receive an entity, the source of the blast. We have no entity so + // I've set this to access blockResistance directly. Might need changing later. + + return (block.blockResistance >= MIN_IMMUNE_RESISTANCE || blocksImmuneToRift.contains(block.blockID)); } return false; } From 47f7e280a769ba7c2499c75f11a6390b6c055ea7 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Tue, 4 Mar 2014 04:11:33 -0400 Subject: [PATCH 06/20] Removed References to Corium Removed references to experimental Corium blocks and fluids. --- .../experimental/LiquidCorium.java | 13 --- .../experimental/LiquidCoriumBlock.java | 106 ------------------ .../mod_pocketDim/DDProperties.java | 3 - .../mod_pocketDim/mod_pocketDim.java | 53 +++------ 4 files changed, 17 insertions(+), 158 deletions(-) delete mode 100644 src/main/java/StevenDimDoors/experimental/LiquidCorium.java delete mode 100644 src/main/java/StevenDimDoors/experimental/LiquidCoriumBlock.java diff --git a/src/main/java/StevenDimDoors/experimental/LiquidCorium.java b/src/main/java/StevenDimDoors/experimental/LiquidCorium.java deleted file mode 100644 index 955765b..0000000 --- a/src/main/java/StevenDimDoors/experimental/LiquidCorium.java +++ /dev/null @@ -1,13 +0,0 @@ -package StevenDimDoors.experimental; - -import net.minecraftforge.fluids.Fluid; - -public class LiquidCorium extends Fluid -{ - - public LiquidCorium(String fluidName) - { - super(fluidName); - } - -} diff --git a/src/main/java/StevenDimDoors/experimental/LiquidCoriumBlock.java b/src/main/java/StevenDimDoors/experimental/LiquidCoriumBlock.java deleted file mode 100644 index 4ea1c12..0000000 --- a/src/main/java/StevenDimDoors/experimental/LiquidCoriumBlock.java +++ /dev/null @@ -1,106 +0,0 @@ -package StevenDimDoors.experimental; - -import java.util.Random; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -import StevenDimDoors.mod_pocketDim.Point3D; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import net.minecraft.util.MathHelper; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; -import net.minecraftforge.fluids.BlockFluidBase; -import net.minecraftforge.fluids.BlockFluidFinite; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.oredict.OreDictionary; - -public class LiquidCoriumBlock extends BlockFluidFinite -{ - private Icon iconFlowing; - private Icon iconStill; - - public static Point3D[] spreadPoints= new Point3D[4]; - public LiquidCoriumBlock(int id, Fluid fluid, Material material) - { - super(id, fluid, material); - this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab); - } - - public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack) - { - par1World.setBlock(par2, par3, par4, this.blockID,15,2); - } - - @Override - public void updateTick(World world, int x, int y, int z, Random rand) - { - boolean didChange=false; - int fluid = this.getQuantaValue(world, x, y, z); - int blockBeneath = world.getBlockId(x, y-1,z); - - if(!(blockBeneath==0||blockBeneath==this.blockID)) - { - for(int xCount=-1;xCount<2;xCount++) - { - for(int yCount=-1;yCount<1;yCount++) - { - for(int zCount=-1;zCount<2;zCount++) - { - int id= world.getBlockId(x+xCount, y+yCount, z+zCount); - if(!(id ==0||id==this.blockID||id==Block.bedrock.blockID)&&!(Math.abs(zCount)+Math.abs(yCount)+Math.abs(xCount)>1)) - { - Block block =Block.blocksList[id]; - if(block.getUnlocalizedName().contains("ore")) - { - world.setBlock(x+xCount, y+yCount, z+zCount,this.blockID,6,2); - } - if(fluid>block.blockHardness*2&&yCount==0&&rand.nextInt(3)==0) - { - didChange=true;; - world.setBlock(x+xCount, y+yCount, z+zCount,0); - } - else if(fluid>block.blockHardness*2+1&&yCount==-1&&!didChange&&rand.nextBoolean()) - { - world.setBlock(x+xCount, y+yCount, z+zCount, 0); - } - - - } - } - } - } - } - - if((fluid==1)&&blockBeneath!=this.blockID&&blockBeneath!=Block.bedrock.blockID) - { - world.setBlockToAir(x, y, z); - world.setBlock(x, y-1, z,Block.bedrock.blockID); - } - super.updateTick(world, x, y, z, rand); - - } - - @SideOnly(Side.CLIENT) - @Override - public void registerIcons(IconRegister ir) - { - - iconStill = ir.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName()+"_still"); - iconFlowing = ir.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName()+"_flowing"); - } - @Override - public Icon getIcon(int side, int meta) - { - return side <= 1 ? iconStill : iconFlowing; - } - - -} diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java b/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java index 5c9e841..2dce852 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java @@ -21,7 +21,6 @@ public class DDProperties public final int TransientDoorID; public final int FabricBlockID; public final int RiftBlockID; - public final int CoriumBlockID; /** * World Generation Block IDs @@ -182,8 +181,6 @@ public class DDProperties GoldenDoorID = config.getBlock("Gold Door Block ID", 1980).getInt(); GoldenDimensionalDoorID = config.getBlock("Gold Dim Door Block ID", 1981).getInt(); - CoriumBlockID = config.getBlock("Corium Block ID", 900).getInt(); - WarpDoorItemID = config.getItem("Warp Door Item ID", 5670).getInt(); RiftRemoverItemID = config.getItem("Rift Remover Item ID", 5671).getInt(); StableFabricItemID = config.getItem("Stable Fabric Item ID", 5672).getInt(); diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java b/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java index 3c61aa1..de2bd61 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java @@ -1,7 +1,21 @@ package StevenDimDoors.mod_pocketDim; -import StevenDimDoors.experimental.LiquidCorium; -import StevenDimDoors.experimental.LiquidCoriumBlock; +import java.io.File; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.EntityEggInfo; +import net.minecraft.entity.EntityList; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ChatMessageComponent; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.common.DimensionManager; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fluids.Fluid; import StevenDimDoors.mod_pocketDim.blocks.BlockDimWall; import StevenDimDoors.mod_pocketDim.blocks.BlockDimWallPerm; import StevenDimDoors.mod_pocketDim.blocks.BlockDoorGold; @@ -36,10 +50,10 @@ import StevenDimDoors.mod_pocketDim.items.ItemWarpDoor; import StevenDimDoors.mod_pocketDim.items.ItemWorldThread; import StevenDimDoors.mod_pocketDim.items.itemRiftRemover; import StevenDimDoors.mod_pocketDim.ticking.CommonTickHandler; +import StevenDimDoors.mod_pocketDim.ticking.CustomLimboPopulator; import StevenDimDoors.mod_pocketDim.ticking.FastRiftRegenerator; import StevenDimDoors.mod_pocketDim.ticking.LimboDecay; import StevenDimDoors.mod_pocketDim.ticking.MobMonolith; -import StevenDimDoors.mod_pocketDim.ticking.CustomLimboPopulator; import StevenDimDoors.mod_pocketDim.ticking.RiftRegenerator; import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoor; import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoorGold; @@ -52,8 +66,6 @@ import StevenDimDoors.mod_pocketDim.world.LimboProvider; import StevenDimDoors.mod_pocketDim.world.PocketProvider; import StevenDimDoors.mod_pocketDimClient.ClientPacketHandler; import StevenDimDoors.mod_pocketDimClient.ClientTickHandler; - -import cpw.mods.fml.common.IPlayerTracker; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; @@ -71,26 +83,6 @@ import cpw.mods.fml.common.registry.LanguageRegistry; import cpw.mods.fml.common.registry.TickRegistry; import cpw.mods.fml.relauncher.Side; -import java.io.File; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.EntityEggInfo; -import net.minecraft.entity.EntityList; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumRarity; -import net.minecraft.item.EnumToolMaterial; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ChatMessageComponent; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraftforge.common.DimensionManager; -import net.minecraftforge.common.ForgeChunkManager; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidRegistry; - @Mod(modid = mod_pocketDim.modid, name = "Dimensional Doors", version = mod_pocketDim.version) @NetworkMod(clientSideRequired = true, serverSideRequired = false, connectionHandler=ConnectionHandler.class, @@ -146,9 +138,6 @@ public class mod_pocketDim public static GatewayGenerator gatewayGenerator; public static PlayerTracker tracker; - public static Block coriumBlock; - public static Fluid coriumFluid; - public static CreativeTabs dimDoorsCreativeTab = new CreativeTabs("dimDoorsCreativeTab") { @Override @@ -293,14 +282,6 @@ public class mod_pocketDim DungeonHelper.initialize(); this.gatewayGenerator.initGateways(); - /** - coriumFluid = new LiquidCorium("Corium").setDensity(1000).setTemperature(3473).setDensity(9400).setLuminosity(6).setRarity(EnumRarity.rare); - coriumBlock = new LiquidCoriumBlock(properties.CoriumBlockID, coriumFluid, Material.lava).setQuantaPerBlock(16).setTickRate(20).setTickRandomly(true).setUnlocalizedName("Corium"); - FluidRegistry.registerFluid(coriumFluid); - GameRegistry.registerBlock(coriumBlock,"Corium"); - LanguageRegistry.addName(coriumBlock, "Corium"); - **/ - // Register loot chests DDLoot.registerInfo(properties); proxy.loadTextures(); From 93f2f6c701474f50c7b87851293a8b284f913e27 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Tue, 4 Mar 2014 04:39:57 -0400 Subject: [PATCH 07/20] Added Config Settings for Nether Gateways Added config settings for the chance of generating a Rift Gateway in a Nether Fortress. Also made it so that DD does not override Nether Fortress generation if fortress gateways are disabled in some way. --- .../java/StevenDimDoors/mod_pocketDim/DDProperties.java | 6 ++++++ .../StevenDimDoors/mod_pocketDim/EventHookContainer.java | 5 ++++- .../world/fortresses/DDNetherFortressGenerator.java | 3 ++- .../world/fortresses/DDStructureNetherBridgeStart.java | 9 ++++----- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java b/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java index 2dce852..d5b6d0f 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java @@ -5,6 +5,7 @@ import java.io.File; import net.minecraftforge.common.Configuration; import StevenDimDoors.mod_pocketDim.ticking.CustomLimboPopulator; import StevenDimDoors.mod_pocketDim.world.GatewayGenerator; +import StevenDimDoors.mod_pocketDim.world.fortresses.DDStructureNetherBridgeStart; public class DDProperties { @@ -104,6 +105,7 @@ public class DDProperties public final int NonTntWeight; public final int ClusterGenerationChance; public final int GatewayGenerationChance; + public final int FortressGatewayGenerationChance; public final int MonolithSpawningChance; public final int LimboReturnRange; public final String CustomSchematicDirectory; @@ -217,6 +219,10 @@ public class DDProperties "Sets the chance (out of " + GatewayGenerator.MAX_GATEWAY_GENERATION_CHANCE + ") that a Rift Gateway will " + "generate in a given chunk. The default chance is 15.").getInt(); + FortressGatewayGenerationChance = config.get(Configuration.CATEGORY_GENERAL, "Fortress Gateway Generation Chance", 33, + "Sets the chance (out of " + DDStructureNetherBridgeStart.MAX_GATEWAY_GENERATION_CHANCE + ") that a Rift Gateway will " + + "generate as part of a Nether Fortress. The default chance is 33.").getInt(); + LimboBiomeID = config.get(CATEGORY_BIOME, "Limbo Biome ID", 251).getInt(); PocketBiomeID = config.get(CATEGORY_BIOME, "Pocket Biome ID", 250).getInt(); diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java index afc1c35..ab3252d 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java @@ -43,7 +43,10 @@ public class EventHookContainer @ForgeSubscribe(priority = EventPriority.LOW) public void onMapGen(InitMapGenEvent event) { - if (event.type == InitMapGenEvent.EventType.NETHER_BRIDGE) + // Replace the Nether fortress generator with our own only if any gateways would ever generate. + // This allows admins to disable our fortress overriding without disabling all gateways. + if (properties.FortressGatewayGenerationChance > 0 && properties.WorldRiftGenerationEnabled && + event.type == InitMapGenEvent.EventType.NETHER_BRIDGE) { event.newGen = new DDNetherFortressGenerator(); } diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDNetherFortressGenerator.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDNetherFortressGenerator.java index 4c2ca7b..c34c5fe 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDNetherFortressGenerator.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDNetherFortressGenerator.java @@ -1,5 +1,6 @@ package StevenDimDoors.mod_pocketDim.world.fortresses; +import StevenDimDoors.mod_pocketDim.DDProperties; import net.minecraft.world.gen.structure.MapGenNetherBridge; import net.minecraft.world.gen.structure.MapGenStructureIO; import net.minecraft.world.gen.structure.StructureStart; @@ -19,6 +20,6 @@ public class DDNetherFortressGenerator extends MapGenNetherBridge protected StructureStart getStructureStart(int chunkX, int chunkZ) { - return new DDStructureNetherBridgeStart(this.worldObj, this.rand, chunkX, chunkZ); + return new DDStructureNetherBridgeStart(this.worldObj, this.rand, chunkX, chunkZ, DDProperties.instance()); } } diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDStructureNetherBridgeStart.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDStructureNetherBridgeStart.java index abf23db..5736e36 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDStructureNetherBridgeStart.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/DDStructureNetherBridgeStart.java @@ -6,16 +6,15 @@ import java.util.Random; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -import net.minecraft.world.gen.structure.ComponentNetherBridgeCrossing; import net.minecraft.world.gen.structure.ComponentNetherBridgeThrone; import net.minecraft.world.gen.structure.StructureBoundingBox; import net.minecraft.world.gen.structure.StructureComponent; import net.minecraft.world.gen.structure.StructureNetherBridgeStart; +import StevenDimDoors.mod_pocketDim.DDProperties; public class DDStructureNetherBridgeStart extends StructureNetherBridgeStart { - private static int GATEWAY_GENERATION_CHANCE = 1; - private static int MAX_GATEWAY_GENERATION_CHANCE = 3; + public static final int MAX_GATEWAY_GENERATION_CHANCE = 100; private boolean hasGateway; private int minX; @@ -24,7 +23,7 @@ public class DDStructureNetherBridgeStart extends StructureNetherBridgeStart public DDStructureNetherBridgeStart() { } - public DDStructureNetherBridgeStart(World world, Random random, int chunkX, int chunkZ) + public DDStructureNetherBridgeStart(World world, Random random, int chunkX, int chunkZ, DDProperties properties) { // StructureNetherBridgeStart handles designing the fortress for us super(world, random, chunkX, chunkZ); @@ -36,7 +35,7 @@ public class DDStructureNetherBridgeStart extends StructureNetherBridgeStart hasGateway = false; // Randomly decide whether to build a gateway in this fortress - if (random.nextInt(MAX_GATEWAY_GENERATION_CHANCE) < GATEWAY_GENERATION_CHANCE) + if (random.nextInt(MAX_GATEWAY_GENERATION_CHANCE) < properties.FortressGatewayGenerationChance) { // Search for all the blaze spawners in a fortress spawnerRooms = new ArrayList(); From 175fa413189ac7736cd5e76ca6bf540327189a5a Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Tue, 4 Mar 2014 04:40:40 -0400 Subject: [PATCH 08/20] Disabled Nether Gateways Disabled Nether Gateways temporarily pending their completion --- .../java/StevenDimDoors/mod_pocketDim/EventHookContainer.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java index ab3252d..d9e957d 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java @@ -45,11 +45,13 @@ public class EventHookContainer { // Replace the Nether fortress generator with our own only if any gateways would ever generate. // This allows admins to disable our fortress overriding without disabling all gateways. + /* if (properties.FortressGatewayGenerationChance > 0 && properties.WorldRiftGenerationEnabled && event.type == InitMapGenEvent.EventType.NETHER_BRIDGE) { event.newGen = new DDNetherFortressGenerator(); } + */ } @SideOnly(Side.CLIENT) From 06bb624cd0cdc44678ad0e2fa312bf3074ba7263 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Tue, 4 Mar 2014 04:47:08 -0400 Subject: [PATCH 09/20] Removed Chance Correction for Nether Gateways Removed code related to a correction factor that would compensate for gateway generation failing a lot more frequently in the Nether. We don't use that approach in the Nether anymore. --- .../mod_pocketDim/world/GatewayGenerator.java | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java index c5bb477..669a0ff 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java @@ -79,25 +79,9 @@ public class GatewayGenerator implements IWorldGenerator int x, y, z; int attempts; - int correction; boolean valid; - @SuppressWarnings("deprecation") DimLink link; NewDimData dimension; - - //Check if we're generating things in the Nether - if (world.provider.dimensionId == NETHER_DIMENSION_ID) - { - //The terrain in the Nether makes it much harder for our gateway spawning algorithm to find a spot to place a gateway. - //Tests show that only about 15% of attempts succeed. Compensate for this by multiplying the chance of generation - //by a correction factor. - correction = NETHER_CHANCE_CORRECTION; - } - else - { - //No correction - correction = 1; - } //Randomly decide whether to place a cluster of rifts here if (random.nextInt(MAX_CLUSTER_GENERATION_CHANCE) < properties.ClusterGenerationChance) @@ -136,7 +120,7 @@ public class GatewayGenerator implements IWorldGenerator //Check if generating structures is enabled and randomly decide whether to place a Rift Gateway here. //This only happens if a rift cluster was NOT generated. - else if (random.nextInt(MAX_GATEWAY_GENERATION_CHANCE) < properties.GatewayGenerationChance * correction && + else if (random.nextInt(MAX_GATEWAY_GENERATION_CHANCE) < properties.GatewayGenerationChance && isStructureGenerationAllowed()) { valid = false; From 0b14dbf453948cd90001e8fad77ad939a071dea4 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Tue, 4 Mar 2014 04:50:28 -0400 Subject: [PATCH 10/20] Minor Change Removed obsolete variable --- .../StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java index 669a0ff..dc7ae4d 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java @@ -32,7 +32,6 @@ public class GatewayGenerator implements IWorldGenerator private static final int CHUNK_LENGTH = 16; private static final int GATEWAY_RADIUS = 4; private static final int MAX_GATEWAY_GENERATION_ATTEMPTS = 10; - private static final int NETHER_CHANCE_CORRECTION = 4; private static final int OVERWORLD_DIMENSION_ID = 0; private static final int NETHER_DIMENSION_ID = -1; private static final int END_DIMENSION_ID = 1; From 310efb978155689ad0a53b8c3b90ed713b2c18fd Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Tue, 4 Mar 2014 06:41:36 -0400 Subject: [PATCH 11/20] Changes to Rift Regeneration Moved a little of the regeneration code to BlockRift to reduce duplicate code. Changed RiftRegenerator to iterate over loaded worlds instead of all worlds. Removed forced rift generation call in EventHookContainer.onWorldLoad() - I feel it would have minimal benefits. Rifts now drop World Thread upon regeneration. Generally cleaned up the code in FastRiftRegenerator and RiftRegenerator. --- .../mod_pocketDim/EventHookContainer.java | 5 --- .../mod_pocketDim/blocks/BlockRift.java | 38 +++++++++++-------- .../ticking/FastRiftRegenerator.java | 30 +++++++-------- .../ticking/RiftRegenerator.java | 24 ++++++------ 4 files changed, 48 insertions(+), 49 deletions(-) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java index d9e957d..dab79f3 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java @@ -135,11 +135,6 @@ public class EventHookContainer PocketManager.load(); } - if (PocketManager.isLoaded()) - { - RiftRegenerator.regenerateRiftsInAllWorlds(); - } - if (event.world != null) { this.playMusicForDim(event.world); diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockRift.java b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockRift.java index eeda361..5f6f896 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockRift.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockRift.java @@ -43,7 +43,8 @@ public class BlockRift extends Block implements ITileEntityProvider private static final int BLOCK_SEARCH_CHANCE = 50; private static final int MAX_BLOCK_DESTRUCTION_CHANCE = 100; private static final int BLOCK_DESTRUCTION_CHANCE = 50; - private static final int WORLD_THREAD_PROBABILITY = 10; + private static final int WORLD_THREAD_CHANCE = 5; + private static final int MAX_WORLD_THREAD_CHANCE = 100; private final DDProperties properties; private final ArrayList blocksImmuneToRift; @@ -191,30 +192,25 @@ public class BlockRift extends Block implements ITileEntityProvider if (!isBlockImmune(world, current.getX(), current.getY(), current.getZ()) && random.nextInt(MAX_BLOCK_DESTRUCTION_CHANCE) < BLOCK_DESTRUCTION_CHANCE) { - this.spawnWorldThread(world.getBlockId(current.getX(), current.getY(), current.getZ()), world, x, y, z); + this.spawnWorldThread(world.getBlockId(current.getX(), current.getY(), current.getZ()), world, x, y, z, random); world.destroyBlock(current.getX(), current.getY(), current.getZ(), false); } } } } - private void spawnWorldThread(int blockID,World worldObj,int x,int y,int z ) + + private void spawnWorldThread(int blockID, World world, int x, int y, int z, Random random) { - if(blockID == 0||!(worldObj.rand.nextInt(100) pointDistances, Queue points) { Point3D[] neighbors = new Point3D[] { @@ -234,6 +230,16 @@ public class BlockRift extends Block implements ITileEntityProvider } } } + + public void regenerateRift(World world, int x, int y, int z, Random random) + { + if (!this.isBlockImmune(world, x, y, z) && world.getChunkProvider().chunkExists(x >> 4, z >> 4)) + { + int blockID = world.getBlockId(x, y, z); + world.setBlock(x, y, z, properties.RiftBlockID); + this.spawnWorldThread(blockID, world, x, y, z, random); + } + } /** * Lets pistons push through rifts, destroying them diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/ticking/FastRiftRegenerator.java b/src/main/java/StevenDimDoors/mod_pocketDim/ticking/FastRiftRegenerator.java index 95af20c..b0f203f 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/ticking/FastRiftRegenerator.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/ticking/FastRiftRegenerator.java @@ -3,6 +3,7 @@ package StevenDimDoors.mod_pocketDim.ticking; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Random; import net.minecraft.world.World; import net.minecraftforge.common.DimensionManager; @@ -12,7 +13,9 @@ import StevenDimDoors.mod_pocketDim.util.Point4D; public class FastRiftRegenerator implements IRegularTickReceiver { - private static final int RIFT_REGENERATION_INTERVAL = 10; //Regenerate random rifts every 10 ticks + private static final int RIFT_REGENERATION_INTERVAL = 10; //Regenerate scheduled rifts every 10 ticks + private static Random random = new Random(); + private ArrayList locationsToRegen = new ArrayList(); public FastRiftRegenerator(IRegularTickSender sender) @@ -23,31 +26,24 @@ public class FastRiftRegenerator implements IRegularTickReceiver { @Override public void notifyTick() { - regenerateRiftsInAllWorlds(); + regenerateScheduledRifts(); } - public void regenerateRiftsInAllWorlds() + public void regenerateScheduledRifts() { - if (this.locationsToRegen.isEmpty()) + if (!locationsToRegen.isEmpty()) { - return; - } - List loadedWorlds = (List) Arrays.asList(DimensionManager.getIDs()); - - for (Point4D point: this.locationsToRegen) - { - if (loadedWorlds.contains(point.getDimension()) && PocketManager.getLink(point) != null) + List loadedWorlds = (List) Arrays.asList(DimensionManager.getIDs()); + for (Point4D point: locationsToRegen) { - World world = DimensionManager.getWorld(point.getDimension()); - - if (!mod_pocketDim.blockRift.isBlockImmune(world, point.getX(), point.getY(), point.getZ()) - && world.getChunkProvider().chunkExists(point.getX() >> 4, point.getZ() >> 4)) + if (loadedWorlds.contains(point.getDimension()) && PocketManager.getLink(point) != null) { - world.setBlock(point.getX(), point.getY(), point.getZ(), mod_pocketDim.blockRift.blockID); + World world = DimensionManager.getWorld(point.getDimension()); + mod_pocketDim.blockRift.regenerateRift(world, point.getX(), point.getY(), point.getZ(), random); } } + locationsToRegen.clear(); } - this.locationsToRegen.clear(); } public void registerRiftForRegen(int x, int y, int z, int dimID) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/ticking/RiftRegenerator.java b/src/main/java/StevenDimDoors/mod_pocketDim/ticking/RiftRegenerator.java index 7187c9d..a50907b 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/ticking/RiftRegenerator.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/ticking/RiftRegenerator.java @@ -1,8 +1,11 @@ package StevenDimDoors.mod_pocketDim.ticking; +import java.util.Arrays; +import java.util.List; +import java.util.Random; + import net.minecraft.world.World; import net.minecraftforge.common.DimensionManager; -import StevenDimDoors.mod_pocketDim.DDProperties; import StevenDimDoors.mod_pocketDim.mod_pocketDim; import StevenDimDoors.mod_pocketDim.core.DimLink; import StevenDimDoors.mod_pocketDim.core.NewDimData; @@ -13,6 +16,7 @@ public class RiftRegenerator implements IRegularTickReceiver { private static final int RIFT_REGENERATION_INTERVAL = 200; //Regenerate random rifts every 200 ticks private static final int RIFTS_REGENERATED_PER_DIMENSION = 5; + private static Random random = new Random(); public RiftRegenerator(IRegularTickSender sender) { @@ -22,16 +26,17 @@ public class RiftRegenerator implements IRegularTickReceiver { @Override public void notifyTick() { - regenerateRiftsInAllWorlds(); + regenerateRiftsInLoadedWorlds(); } - public static void regenerateRiftsInAllWorlds() + private static void regenerateRiftsInLoadedWorlds() { - //Regenerate rifts that have been replaced (not permanently removed) by players - DDProperties properties = DDProperties.instance(); - - for (NewDimData dimension : PocketManager.getDimensions()) + // Regenerate rifts that have been replaced (not permanently removed) by players + // Only do this in dimensions that are currently loaded + List loadedWorlds = (List) Arrays.asList(DimensionManager.getIDs()); + for (Integer dimensionID : loadedWorlds) { + NewDimData dimension = PocketManager.getDimensionData(dimensionID); if (dimension.linkCount() > 0) { World world = DimensionManager.getWorld(dimension.id()); @@ -42,10 +47,7 @@ public class RiftRegenerator implements IRegularTickReceiver { { DimLink link = dimension.getRandomLink(); Point4D source = link.source(); - if (!mod_pocketDim.blockRift.isBlockImmune(world, source.getX(), source.getY(), source.getZ())&& world.getChunkProvider().chunkExists(source.getX() >> 4, source.getZ() >> 4)) - { - world.setBlock(source.getX(), source.getY(), source.getZ(), properties.RiftBlockID); - } + mod_pocketDim.blockRift.regenerateRift(world, source.getX(), source.getY(), source.getZ(), random); } } } From 8cb651030a048db4f7c790b49b99644adaec05ec Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Wed, 5 Mar 2014 14:22:52 -0400 Subject: [PATCH 12/20] Cleaned up Initialization for GatewayGenerator Cleaned up the code for initializing GatewayGenerator. We had some static fields that didn't need to be static and we could just initialize gateways from the class's constructor. --- .../mod_pocketDim/mod_pocketDim.java | 7 ++----- .../mod_pocketDim/world/GatewayGenerator.java | 19 +++++++++---------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java b/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java index de2bd61..ccc716f 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java @@ -166,7 +166,6 @@ public class mod_pocketDim EventHookContainer hooks = new EventHookContainer(properties); MinecraftForge.EVENT_BUS.register(hooks); MinecraftForge.TERRAIN_GEN_BUS.register(hooks); - gatewayGenerator = new GatewayGenerator(properties); } @EventHandler @@ -181,7 +180,7 @@ public class mod_pocketDim spawner = new CustomLimboPopulator(commonTickHandler, properties); new RiftRegenerator(commonTickHandler); //No need to store the reference LimboDecay decay = new LimboDecay(commonTickHandler, properties); - this.fastRiftRegenerator = new FastRiftRegenerator(commonTickHandler); + fastRiftRegenerator = new FastRiftRegenerator(commonTickHandler); transientDoor = new TransientDoor(properties.TransientDoorID, Material.iron, properties).setHardness(1.0F) .setUnlocalizedName("transientDoor"); goldenDimensionalDoor = new BlockGoldDimDoor(properties.GoldenDimensionalDoorID, Material.iron, properties).setHardness(1.0F) .setUnlocalizedName("dimDoorGold"); @@ -277,10 +276,9 @@ public class mod_pocketDim EntityList.entityEggs.put(properties.MonolithEntityID, new EntityEggInfo(properties.MonolithEntityID, 0, 0xffffff)); LanguageRegistry.instance().addStringLocalization("entity.DimDoors.Obelisk.name", "Monolith"); - CraftingManager.registerRecipes(properties); DungeonHelper.initialize(); - this.gatewayGenerator.initGateways(); + gatewayGenerator = new GatewayGenerator(properties); // Register loot chests DDLoot.registerInfo(properties); @@ -288,7 +286,6 @@ public class mod_pocketDim proxy.registerRenderers(); } - @EventHandler public void onPostInitialization(FMLPostInitializationEvent event) { diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java index dc7ae4d..0a89eea 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java @@ -36,27 +36,26 @@ public class GatewayGenerator implements IWorldGenerator private static final int NETHER_DIMENSION_ID = -1; private static final int END_DIMENSION_ID = 1; - private static ArrayList gateways; - private static BaseGateway defaultGateway; + private ArrayList gateways; + private BaseGateway defaultGateway; private final DDProperties properties; public GatewayGenerator(DDProperties properties) { this.properties = properties; - + this.initialize(); } - public void initGateways() + private void initialize() { - gateways=new ArrayList(); - this.defaultGateway=new GatewayTwoPillars(this.properties); + gateways = new ArrayList(); + defaultGateway = new GatewayTwoPillars(properties); - //add gateways here - gateways.add(new GatewaySandstonePillars(this.properties)); + // Add gateways here gateways.add(defaultGateway); - gateways.add(new GatewayLimbo(this.properties)); - + gateways.add(new GatewaySandstonePillars(properties)); + gateways.add(new GatewayLimbo(properties)); } @Override From cd7cf4e7ca590f5dc24343a8e15bbbdd1fda45f8 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Wed, 5 Mar 2014 20:24:07 -0400 Subject: [PATCH 13/20] Added DeathTracker and Removed PlayerTracker Added DeathTracker - a class for tracking the deaths of players on the server while in pocket dimensions. It'll be used for generating skulls for grave chests. Also removed PlayerTracker since it wasn't being used for anything at all. I'm guessing it was supposed to be used for something later. We can restore it if it's ever needed. --- .../mod_pocketDim/DeathTracker.java | 102 ++++++++++++++++++ .../mod_pocketDim/PlayerTracker.java | 39 ------- .../mod_pocketDim/mod_pocketDim.java | 17 +-- 3 files changed, 112 insertions(+), 46 deletions(-) create mode 100644 src/main/java/StevenDimDoors/mod_pocketDim/DeathTracker.java delete mode 100644 src/main/java/StevenDimDoors/mod_pocketDim/PlayerTracker.java diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/DeathTracker.java b/src/main/java/StevenDimDoors/mod_pocketDim/DeathTracker.java new file mode 100644 index 0000000..be0dfcf --- /dev/null +++ b/src/main/java/StevenDimDoors/mod_pocketDim/DeathTracker.java @@ -0,0 +1,102 @@ +package StevenDimDoors.mod_pocketDim; + +import java.io.BufferedReader; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Random; + +public class DeathTracker +{ + private ArrayList usernameList; + private HashSet usernameSet; + private String filePath; + private boolean modified; + + public DeathTracker(String filePath) + { + this.usernameList = new ArrayList(); + this.usernameSet = new HashSet(); + this.filePath = filePath; + this.modified = false; + + readFromFile(); + } + + private void readFromFile() + { + try + { + BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath))); + for (String line = reader.readLine(); line != null; line = reader.readLine()) + { + line = line.trim(); + if (!line.isEmpty()) + { + usernameSet.add(line); + } + } + reader.close(); + } + catch (FileNotFoundException e) { } + catch (IOException e) + { + System.err.println("An unexpected exception occurred while trying to read DeathTracker data:"); + System.err.println(e.toString()); + } + usernameList.addAll(usernameSet); + } + + public void writeToFile() + { + try + { + PrintWriter writer = new PrintWriter(filePath); + for (String username : usernameList) + { + writer.println(username); + } + writer.close(); + modified = false; + } + catch (FileNotFoundException e) + { + System.err.println("An unexpected exception occurred while trying to read DeathTracker data:"); + System.err.println(e.toString()); + } + } + + public boolean isModified() + { + return modified; + } + + public boolean isEmpty() + { + return usernameList.isEmpty(); + } + + public String getRandomUsername(Random random) + { + if (usernameList.isEmpty()) + { + throw new IllegalStateException("Cannot retrieve a random username from an empty list."); + } + return usernameList.get(random.nextInt(usernameList.size())); + } + + public boolean addUsername(String username) + { + if (usernameSet.add(username)) + { + usernameList.add(username); + modified = true; + return true; + } + return false; + } +} diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/PlayerTracker.java b/src/main/java/StevenDimDoors/mod_pocketDim/PlayerTracker.java deleted file mode 100644 index c7cb895..0000000 --- a/src/main/java/StevenDimDoors/mod_pocketDim/PlayerTracker.java +++ /dev/null @@ -1,39 +0,0 @@ -package StevenDimDoors.mod_pocketDim; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.network.packet.Packet250CustomPayload; -import net.minecraftforge.common.DimensionManager; -import net.minecraftforge.common.network.ForgePacket; -import net.minecraftforge.common.network.packet.DimensionRegisterPacket; -import cpw.mods.fml.common.IPlayerTracker; - -public class PlayerTracker implements IPlayerTracker -{ - - @Override - public void onPlayerLogin(EntityPlayer player) - { - - } - - @Override - public void onPlayerLogout(EntityPlayer player) { - // TODO Auto-generated method stub - - } - - @Override - public void onPlayerChangedDimension(EntityPlayer player) { - // TODO Auto-generated method stub - - } - - @Override - public void onPlayerRespawn(EntityPlayer player) - { - - - } - -} diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java b/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java index ccc716f..c25ecb3 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java @@ -134,9 +134,9 @@ public class mod_pocketDim public static DDProperties properties; public static CustomLimboPopulator spawner; //Added this field temporarily. Will be refactored out later. - public FastRiftRegenerator fastRiftRegenerator; + public static FastRiftRegenerator fastRiftRegenerator; public static GatewayGenerator gatewayGenerator; - public static PlayerTracker tracker; + public static DeathTracker deathTracker; public static CreativeTabs dimDoorsCreativeTab = new CreativeTabs("dimDoorsCreativeTab") { @@ -206,14 +206,11 @@ public class mod_pocketDim itemRiftBlade = (new ItemRiftBlade(properties.RiftBladeItemID, properties)).setUnlocalizedName("ItemRiftBlade"); itemStabilizedLinkSignature = (new ItemStabilizedRiftSignature(properties.StabilizedRiftSignatureItemID)).setUnlocalizedName("itemStabilizedRiftSig"); itemWorldThread = (new ItemWorldThread(properties.WorldThreadItemID)).setUnlocalizedName("itemWorldThread"); - mod_pocketDim.limboBiome = (new BiomeGenLimbo(properties.LimboBiomeID)); mod_pocketDim.pocketBiome = (new BiomeGenPocket(properties.PocketBiomeID)); GameRegistry.registerWorldGenerator(mod_pocketDim.gatewayGenerator); - tracker = new PlayerTracker(); - GameRegistry.registerPlayerTracker(tracker); GameRegistry.registerBlock(goldenDoor, "Golden Door"); GameRegistry.registerBlock(goldenDimensionalDoor, "Golden Dimensional Door"); @@ -298,6 +295,8 @@ public class mod_pocketDim try { PocketManager.unload(); + deathTracker.writeToFile(); + deathTracker = null; } catch (Exception e) { @@ -308,9 +307,9 @@ public class mod_pocketDim @EventHandler public void onServerStarting(FMLServerStartingEvent event) { - //TODO- load dims with forced chunks on server startup here + // Register commands with the server CommandResetDungeons.instance().register(event); CommandCreateDungeonRift.instance().register(event); CommandDeleteAllLinks.instance().register(event); @@ -321,7 +320,11 @@ public class mod_pocketDim //CommandPruneDimensions.instance().register(event); CommandCreatePocket.instance().register(event); CommandTeleportPlayer.instance().register(event); - + + // Initialize a new DeathTracker + String deathTrackerFile = DimensionManager.getCurrentSaveRootDirectory() + "/DimensionalDoors/data/deaths.txt"; + deathTracker = new DeathTracker(deathTrackerFile); + try { ChunkLoaderHelper.loadChunkForcedWorlds(event); From 88656f5ad4a1dbf3af0084985db5703e8a9062fd Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Wed, 5 Mar 2014 20:24:29 -0400 Subject: [PATCH 14/20] Minor Change Minor change to spacing in PocketManager --- .../StevenDimDoors/mod_pocketDim/core/PocketManager.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java b/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java index 758a495..29fbf75 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java @@ -35,10 +35,10 @@ import StevenDimDoors.mod_pocketDim.watcher.IUpdateWatcher; import StevenDimDoors.mod_pocketDim.watcher.UpdateWatcherProxy; /** - * This class regulates all the operations involving the storage and manipulation of dimensions. It handles saving dim data, teleporting the player, and - * creating/registering new dimensions as well as loading old dimensions on startup + * This class regulates all the operations involving the storage and manipulation of dimensions. + * It handles saving dim data, teleporting the player, and creating/registering new dimensions as + * well as loading old dimensions on startup */ -@SuppressWarnings("deprecation") public class PocketManager { private static class InnerDimData extends NewDimData implements IPackable From 6152f397918ada7005d0bfbbe53dea81053a43ec Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Wed, 5 Mar 2014 21:32:52 -0400 Subject: [PATCH 15/20] Changes to EventHookContainer Added code to save DeathTracker data when then Overworld saves, but only if it's been modified since the last time it was saved. Also changed how we handle player deaths in pocket dimensions. Now we have two death handlers. There is a high-priority one that sends players to Limbo only when Limbo preserves their inventories. The other is a low-priority handler that sends players to Limbo only when inventory preservation is disabled. This gives players a chance to keep their inventories if another mod would have revived them without that penalty. --- .../mod_pocketDim/EventHookContainer.java | 63 ++++++++++++++----- 1 file changed, 48 insertions(+), 15 deletions(-) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java index dab79f3..7827bd3 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java @@ -22,11 +22,9 @@ import net.minecraftforge.event.world.WorldEvent; import StevenDimDoors.mod_pocketDim.core.DDTeleporter; import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.items.BaseItemDoor; -import StevenDimDoors.mod_pocketDim.ticking.RiftRegenerator; import StevenDimDoors.mod_pocketDim.util.Point4D; import StevenDimDoors.mod_pocketDim.world.LimboProvider; import StevenDimDoors.mod_pocketDim.world.PocketProvider; -import StevenDimDoors.mod_pocketDim.world.fortresses.DDNetherFortressGenerator; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -148,30 +146,60 @@ public class EventHookContainer } @ForgeSubscribe(priority = EventPriority.HIGHEST) - public boolean LivingDeathEvent(LivingDeathEvent event) + public boolean onDeathWithHighPriority(LivingDeathEvent event) { + // Teleport the entity to Limbo if it's a player in a pocket dimension and + // if Limbo preserves player inventories. We'll check again in a low-priority event handler + // to give other mods a chance to save the player if Limbo does _not_ preserve inventories. + Entity entity = event.entity; if (entity instanceof EntityPlayer && properties.LimboEnabled && - entity.worldObj.provider instanceof PocketProvider) + entity.worldObj.provider instanceof PocketProvider && properties.LimboReturnsInventoryEnabled) { EntityPlayer player = (EntityPlayer) entity; - if (!properties.LimboReturnsInventoryEnabled) - { - player.inventory.clearInventory(-1, -1); - } - player.extinguish(); - player.clearActivePotions(); - ChunkCoordinates coords = LimboProvider.getLimboSkySpawn(player.worldObj.rand); - Point4D destination = new Point4D((int) (coords.posX+entity.posX), coords.posY, (int) (coords.posZ+entity.posZ ), mod_pocketDim.properties.LimboDimensionID); - DDTeleporter.teleportEntity(player, destination, false); - player.setHealth(player.getMaxHealth()); + mod_pocketDim.deathTracker.addUsername(player.username); + revivePlayerInLimbo(player); event.setCanceled(true); - return false; } return true; } + + @ForgeSubscribe(priority = EventPriority.LOWEST) + public boolean onDeathWithLowPriority(LivingDeathEvent event) + { + // This low-priority handler gives mods a chance to save a player from death before we apply + // teleporting them to Limbo _without_ preserving their inventory. We also check if the player + // died in a pocket dimension and record it, regardless of whether the player will be sent to Limbo. + + Entity entity = event.entity; + + if (entity instanceof EntityPlayer && entity.worldObj.provider instanceof PocketProvider) + { + EntityPlayer player = (EntityPlayer) entity; + mod_pocketDim.deathTracker.addUsername(player.username); + + if (properties.LimboEnabled && !properties.LimboReturnsInventoryEnabled) + { + player.inventory.clearInventory(-1, -1); + revivePlayerInLimbo(player); + event.setCanceled(true); + } + return false; + } + return true; + } + + private void revivePlayerInLimbo(EntityPlayer player) + { + player.extinguish(); + player.clearActivePotions(); + player.setHealth(player.getMaxHealth()); + ChunkCoordinates coords = LimboProvider.getLimboSkySpawn(player.worldObj.rand); + Point4D destination = new Point4D((int) (coords.posX + player.posX), coords.posY, (int) (coords.posZ + player.posZ ), mod_pocketDim.properties.LimboDimensionID); + DDTeleporter.teleportEntity(player, destination, false); + } @ForgeSubscribe public void onWorldSave(WorldEvent.Save event) @@ -179,6 +207,11 @@ public class EventHookContainer if (event.world.provider.dimensionId == 0) { PocketManager.save(); + + if (mod_pocketDim.deathTracker.isModified()) + { + mod_pocketDim.deathTracker.writeToFile(); + } } } From aea1a9a7c575d5eeff23d8ca502e44c900c5f44b Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Wed, 5 Mar 2014 21:39:54 -0400 Subject: [PATCH 16/20] Changes to Loot and Skulls There is 5% chance that grave chests will contain the head of a random player that has died in a pocket dimension; there is a 20% chance of it being a special head. Also moved Ghast Tears to grave chests and removed Eyes of Enders as loot. Also made FoR loot more rare but increased the amount given out so that the average amount picked up should be the same as before. World Thread is slightly less common in response to being easier to farm from rifts. --- .../StevenDimDoors/mod_pocketDim/DDLoot.java | 41 +++++++++++++++---- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/DDLoot.java b/src/main/java/StevenDimDoors/mod_pocketDim/DDLoot.java index 2bf8000..74dc5e9 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/DDLoot.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/DDLoot.java @@ -3,11 +3,11 @@ package StevenDimDoors.mod_pocketDim; import java.util.ArrayList; import java.util.Random; -import net.minecraft.block.Block; import net.minecraft.enchantment.Enchantment; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MathHelper; import net.minecraft.util.WeightedRandom; import net.minecraft.util.WeightedRandomChestContent; @@ -19,10 +19,14 @@ import StevenDimDoors.mod_pocketDim.util.WeightedContainer; */ public class DDLoot { + private static final String[] SPECIAL_SKULL_OWNERS = new String[] { "stevenrs11", "kamikazekiwi3", "Jaitsu", "XCompWiz", "skyboy026", "Wylker" }; + private static final double MIN_ITEM_DAMAGE = 0.3; private static final double MAX_ITEM_DAMAGE = 0.9; private static final int ITEM_ENCHANTMENT_CHANCE = 50; private static final int MAX_ITEM_ENCHANTMENT_CHANCE = 100; + private static final int SPECIAL_SKULL_CHANCE = 20; + private static final int MAX_SPECIAL_SKULL_CHANCE = 100; public static final String DIMENSIONAL_DUNGEON_CHEST = "dimensionalDungeonChest"; public static ChestGenHooks DungeonChestInfo = null; @@ -49,11 +53,9 @@ public class DDLoot { addContent(true, items, Item.diamond.itemID, 40, 1, 2); addContent(true, items, Item.emerald.itemID, 20, 1, 2); addContent(true, items, Item.appleGold.itemID, 10); - addContent(true, items, Item.eyeOfEnder.itemID, 15); - addContent(true, items, Item.ghastTear.itemID, 15); - addContent(properties.FabricOfRealityLootEnabled, items, mod_pocketDim.blockDimWall.blockID, 80, 4, 16); - addContent(properties.WorldThreadLootEnabled, items, mod_pocketDim.itemWorldThread.itemID, 90, 2,10); + addContent(properties.FabricOfRealityLootEnabled, items, mod_pocketDim.blockDimWall.blockID, 20, 16, 64); + addContent(properties.WorldThreadLootEnabled, items, mod_pocketDim.itemWorldThread.itemID, 80, 2, 8); // Add all the items to our dungeon chest addItemsToContainer(DungeonChestInfo, items); @@ -194,20 +196,22 @@ public class DDLoot { // Insert other random stuff // 40% chance for a name tag, 35% chance for a glass bottle // 30% chance for an ender pearl, 5% chance for record 11 + // 30% chance for a ghast tear addItemWithChance(stacks, random, 40, Item.nameTag, 1); addItemWithChance(stacks, random, 35, Item.glassBottle, 1); addItemWithChance(stacks, random, 30, Item.enderPearl, 1); + addItemWithChance(stacks, random, 30, Item.ghastTear, 1); addItemWithChance(stacks, random, 5, Item.record11, 1); - // Finally, there is a 3% chance of adding a player head - if (random.nextInt(100) < 50) // FIXME: SET TO 50% FOR TESTING, CHANGE TO 3% + // Finally, there is a 5% chance of adding a player head + if (random.nextInt(100) < 5) { - stacks.add( new ItemStack(Block.skull) ); + addGraveSkull(stacks, random); } fillChest(stacks, inventory, random); } - + private static void addModifiedEquipment(Item item, ArrayList stacks, Random random) { if (item == null) @@ -270,4 +274,23 @@ public class DDLoot { int damage = (int) (item.getMaxDamage() * MathHelper.getRandomDoubleInRange(random, MIN_ITEM_DAMAGE, MAX_ITEM_DAMAGE)); return new ItemStack(item, 1, damage); } + + private static void addGraveSkull(ArrayList stacks, Random random) + { + final int PLAYER_SKULL_METADATA = 3; + DeathTracker deathTracker = mod_pocketDim.deathTracker; + String skullOwner; + if (deathTracker.isEmpty() || (random.nextInt(MAX_SPECIAL_SKULL_CHANCE) < SPECIAL_SKULL_CHANCE)) + { + skullOwner = SPECIAL_SKULL_OWNERS[ random.nextInt(SPECIAL_SKULL_OWNERS.length) ]; + } + else + { + skullOwner = deathTracker.getRandomUsername(random); + } + ItemStack skull = new ItemStack(Item.skull, 1, PLAYER_SKULL_METADATA); + skull.stackTagCompound = new NBTTagCompound(); + skull.stackTagCompound.setString("SkullOwner", skullOwner); + stacks.add(skull); + } } From 4ec84f9b860f640a5fedaf6b1071b2b33cb589f1 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Wed, 5 Mar 2014 21:53:50 -0400 Subject: [PATCH 17/20] Fixed NPE in EventHookContainer Fixed an NPE that would occur because mod_pocketDim.deathTracker was set to null before the last onWorldSave event was triggered when a server was shutting down. --- .../java/StevenDimDoors/mod_pocketDim/EventHookContainer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java index 7827bd3..8f6c4a3 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java @@ -208,7 +208,7 @@ public class EventHookContainer { PocketManager.save(); - if (mod_pocketDim.deathTracker.isModified()) + if (mod_pocketDim.deathTracker != null && mod_pocketDim.deathTracker.isModified()) { mod_pocketDim.deathTracker.writeToFile(); } From 196e79f437d80823098203d3523443988db17423 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Wed, 5 Mar 2014 21:57:15 -0400 Subject: [PATCH 18/20] Moved GatewayGenerator into Gateways Package Moved the GatewayGenerator class to another package. --- .../java/StevenDimDoors/mod_pocketDim/DDProperties.java | 2 +- .../java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java | 2 +- .../world/{ => gateways}/GatewayGenerator.java | 7 ++----- 3 files changed, 4 insertions(+), 7 deletions(-) rename src/main/java/StevenDimDoors/mod_pocketDim/world/{ => gateways}/GatewayGenerator.java (95%) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java b/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java index d5b6d0f..622d107 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/DDProperties.java @@ -4,8 +4,8 @@ import java.io.File; import net.minecraftforge.common.Configuration; import StevenDimDoors.mod_pocketDim.ticking.CustomLimboPopulator; -import StevenDimDoors.mod_pocketDim.world.GatewayGenerator; import StevenDimDoors.mod_pocketDim.world.fortresses.DDStructureNetherBridgeStart; +import StevenDimDoors.mod_pocketDim.world.gateways.GatewayGenerator; public class DDProperties { diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java b/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java index c25ecb3..3d96957 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java @@ -61,9 +61,9 @@ import StevenDimDoors.mod_pocketDim.tileentities.TileEntityRift; import StevenDimDoors.mod_pocketDim.tileentities.TileEntityTransTrapdoor; import StevenDimDoors.mod_pocketDim.world.BiomeGenLimbo; import StevenDimDoors.mod_pocketDim.world.BiomeGenPocket; -import StevenDimDoors.mod_pocketDim.world.GatewayGenerator; import StevenDimDoors.mod_pocketDim.world.LimboProvider; import StevenDimDoors.mod_pocketDim.world.PocketProvider; +import StevenDimDoors.mod_pocketDim.world.gateways.GatewayGenerator; import StevenDimDoors.mod_pocketDimClient.ClientPacketHandler; import StevenDimDoors.mod_pocketDimClient.ClientTickHandler; import cpw.mods.fml.common.Mod; diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayGenerator.java similarity index 95% rename from src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java rename to src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayGenerator.java index 0a89eea..0257be3 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/GatewayGenerator.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayGenerator.java @@ -1,4 +1,4 @@ -package StevenDimDoors.mod_pocketDim.world; +package StevenDimDoors.mod_pocketDim.world.gateways; import java.util.ArrayList; import java.util.Random; @@ -15,10 +15,7 @@ import StevenDimDoors.mod_pocketDim.core.LinkTypes; import StevenDimDoors.mod_pocketDim.core.NewDimData; import StevenDimDoors.mod_pocketDim.core.PocketManager; import StevenDimDoors.mod_pocketDim.items.ItemDimensionalDoor; -import StevenDimDoors.mod_pocketDim.world.gateways.BaseGateway; -import StevenDimDoors.mod_pocketDim.world.gateways.GatewayLimbo; -import StevenDimDoors.mod_pocketDim.world.gateways.GatewaySandstonePillars; -import StevenDimDoors.mod_pocketDim.world.gateways.GatewayTwoPillars; +import StevenDimDoors.mod_pocketDim.world.PocketProvider; import cpw.mods.fml.common.IWorldGenerator; public class GatewayGenerator implements IWorldGenerator From 87452e783caaa861b8dea00197c4b17860c507ee Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Thu, 6 Mar 2014 01:39:37 -0400 Subject: [PATCH 19/20] Minor Change Removed random text file... --- Experimental | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Experimental diff --git a/Experimental b/Experimental deleted file mode 100644 index 219b040..0000000 --- a/Experimental +++ /dev/null @@ -1 +0,0 @@ -Experiment here From f01222afeeb9ea310fe211296d80728f52b9a5e6 Mon Sep 17 00:00:00 2001 From: SenseiKiwi Date: Thu, 6 Mar 2014 02:11:05 -0400 Subject: [PATCH 20/20] Updated Version Numbers Updated all version numbers manually. Hopefully we'll automate this in the future. --- build.gradle | 2 +- src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java | 2 +- src/main/resources/mcmod.info | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 97a9338..487f821 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ apply plugin: 'forge' -version = "2.2.1RC1-" + System.getenv("BUILD_NUMBER") +version = "2.2.2RC1-" + System.getenv("BUILD_NUMBER") group= "com.stevenrs11.dimdoors" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "DimensionalDoors" diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java b/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java index 3d96957..389496b 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/mod_pocketDim.java @@ -92,7 +92,7 @@ serverPacketHandlerSpec = @SidedPacketHandler(channels = {PacketConstants.CHANNEL_NAME}, packetHandler = ServerPacketHandler.class)) public class mod_pocketDim { - public static final String version = "1.6.4R2.1.2RC1"; + public static final String version = "1.6.4R2.2.2RC1"; public static final String modid = "dimdoors"; //need to clean up diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 544bd0e..edad775 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -6,7 +6,7 @@ "modid": "dimdoors", "name": "Dimensional Doors", "description": "Bend and twist reality itself, creating pocket dimensions, rifts, and much more", -"version": "1.6.4R2.1.2RC1", +"version": "1.6.4R2.2.2RC1", "credits": "Created by StevenRS11, Coded by StevenRS11 and SenseiKiwi, Logo and Testing by Jaitsu", "logoFile": "/dimdoors_logo.png", "mcversion": "",