From b3f7b5a07b875244cb1526635d55ce3b09e21d69 Mon Sep 17 00:00:00 2001 From: Sen Date: Fri, 11 Jul 2025 14:40:09 +0200 Subject: [PATCH] item changes --- client/src/main/java/client/Client.java | 4 +- .../java/client/gui/character/GuiChar.java | 6 +- .../client/gui/container/GuiContainer.java | 4 ++ .../java/client/network/ClientPlayer.java | 2 +- .../java/client/renderer/EntityRenderer.java | 2 +- .../resources/textures/items/dna_sample.png | Bin 0 -> 5061 bytes .../{npc_spawner.png => dna_sample_char.png} | Bin ...verlay.png => dna_sample_char_overlay.png} | Bin .../textures/items/dna_sample_overlay.png | Bin 0 -> 5419 bytes .../main/resources/textures/items/editor.png | Bin 0 -> 1421 bytes .../resources/textures/items/info_wand.png | Bin 1377 -> 0 bytes .../main/resources/textures/items/scanner.png | Bin 0 -> 4874 bytes .../resources/textures/items/spawn_egg.png | Bin 358 -> 0 bytes .../textures/items/spawn_egg_overlay.png | Bin 402 -> 0 bytes .../items/{lightning_wand.png => trident.png} | Bin .../main/resources/textures/items/wand.png | Bin 1421 -> 1377 bytes .../common/{potion => effect}/Effect.java | 34 +++++++++- .../{potion => effect}/StatusEffect.java | 2 +- .../src/main/java/common/entity/Entity.java | 4 +- .../common/entity/EntityTrackerEntry.java | 2 +- .../common/entity/animal/EntityDragon.java | 2 +- .../common/entity/animal/EntityHorse.java | 6 +- .../common/entity/animal/EntityRabbit.java | 4 +- .../java/common/entity/npc/CharacterInfo.java | 4 +- .../common/entity/npc/EntityArachnoid.java | 4 +- .../common/entity/npc/EntityFlyingNPC.java | 2 +- .../java/common/entity/npc/EntityMage.java | 4 +- .../java/common/entity/npc/EntityNPC.java | 10 +-- .../common/entity/projectile/EntityBox.java | 4 +- .../entity/projectile/EntityPotion.java | 4 +- .../common/entity/types/EntityLiving.java | 10 +-- .../main/java/common/init/EntityRegistry.java | 12 ++-- .../main/java/common/init/ItemRegistry.java | 28 ++++---- common/src/main/java/common/init/Items.java | 22 +++--- .../src/main/java/common/item/CheatTab.java | 8 +-- common/src/main/java/common/item/Item.java | 4 ++ ...mNpcSpawner.java => ItemCharTemplate.java} | 55 +++------------ ...onsterPlacer.java => ItemMobTemplate.java} | 64 +++--------------- .../java/common/item/tool/ItemAppleGold.java | 4 +- .../{ItemEditWand.java => ItemEditor.java} | 21 ++---- .../common/item/tool/ItemExterminator.java | 10 +-- .../java/common/item/tool/ItemFishFood.java | 4 +- .../main/java/common/item/tool/ItemFood.java | 4 +- .../java/common/item/tool/ItemPotion.java | 4 +- .../{ItemInfoWand.java => ItemScanner.java} | 4 +- .../{ItemLightning.java => ItemTrident.java} | 4 +- .../src/main/java/common/network/IPlayer.java | 2 +- .../common/packet/SPacketEntityEffect.java | 4 +- .../packet/SPacketRemoveEntityEffect.java | 4 +- .../common/tileentity/TileEntityBeacon.java | 4 +- .../tileentity/TileEntityBrewingStand.java | 2 +- .../tileentity/TileEntityMobSpawner.java | 18 ++--- server/src/main/java/server/Server.java | 2 +- .../server/command/commands/CommandGod.java | 2 +- .../server/command/commands/CommandMilk.java | 2 +- .../command/commands/CommandPotion.java | 4 +- .../src/main/java/server/network/Player.java | 4 +- 57 files changed, 180 insertions(+), 230 deletions(-) create mode 100755 client/src/main/resources/textures/items/dna_sample.png rename client/src/main/resources/textures/items/{npc_spawner.png => dna_sample_char.png} (100%) rename client/src/main/resources/textures/items/{npc_spawner_overlay.png => dna_sample_char_overlay.png} (100%) create mode 100755 client/src/main/resources/textures/items/dna_sample_overlay.png create mode 100755 client/src/main/resources/textures/items/editor.png delete mode 100755 client/src/main/resources/textures/items/info_wand.png create mode 100755 client/src/main/resources/textures/items/scanner.png delete mode 100755 client/src/main/resources/textures/items/spawn_egg.png delete mode 100755 client/src/main/resources/textures/items/spawn_egg_overlay.png rename client/src/main/resources/textures/items/{lightning_wand.png => trident.png} (100%) rename common/src/main/java/common/{potion => effect}/Effect.java (88%) rename common/src/main/java/common/{potion => effect}/StatusEffect.java (99%) rename common/src/main/java/common/item/spawner/{ItemNpcSpawner.java => ItemCharTemplate.java} (75%) rename common/src/main/java/common/item/spawner/{ItemMonsterPlacer.java => ItemMobTemplate.java} (72%) rename common/src/main/java/common/item/tool/{ItemEditWand.java => ItemEditor.java} (70%) rename common/src/main/java/common/item/tool/{ItemInfoWand.java => ItemScanner.java} (91%) rename common/src/main/java/common/item/tool/{ItemLightning.java => ItemTrident.java} (90%) diff --git a/client/src/main/java/client/Client.java b/client/src/main/java/client/Client.java index a28b6cdd..63f9c815 100755 --- a/client/src/main/java/client/Client.java +++ b/client/src/main/java/client/Client.java @@ -110,6 +110,8 @@ import common.collect.Lists; import common.collect.Maps; import common.color.TextColor; import common.dimension.Space; +import common.effect.Effect; +import common.effect.StatusEffect; import common.entity.Entity; import common.entity.animal.EntityHorse; import common.entity.npc.Energy; @@ -161,8 +163,6 @@ import common.packet.CPacketCheat; import common.packet.CPacketMessage; import common.packet.HPacketHandshake; import common.packet.CPacketAction.Action; -import common.potion.Effect; -import common.potion.StatusEffect; import common.properties.Property; import common.sound.EventType; import common.sound.PositionedSound; diff --git a/client/src/main/java/client/gui/character/GuiChar.java b/client/src/main/java/client/gui/character/GuiChar.java index bd8529e5..5b2dd786 100755 --- a/client/src/main/java/client/gui/character/GuiChar.java +++ b/client/src/main/java/client/gui/character/GuiChar.java @@ -411,9 +411,9 @@ public class GuiChar extends GuiList }, IPlayer.VALID_NICK, this.gm.player == null ? "" : this.gm.player.getCustomNameTag())); this.templateButton.enabled = false; this.dimension = new Random().zrange(UniverseRegistry.getBaseDimensions().size()); - EntityInfo egg = EntityRegistry.SPAWN_EGGS.get(this.gm.player == null ? EntityRegistry.getEntityString(EntityHuman.class) : EntityRegistry.getEntityString(this.gm.player)); - if(egg != null && egg.origin() != null) { - Dimension dim = UniverseRegistry.getDimension(egg.origin()); + EntityInfo info = EntityRegistry.DNA.get(this.gm.player == null ? EntityRegistry.getEntityString(EntityHuman.class) : EntityRegistry.getEntityString(this.gm.player)); + if(info != null && info.origin() != null) { + Dimension dim = UniverseRegistry.getDimension(info.origin()); if(dim != null) { for(int z = 0; z < UniverseRegistry.getBaseDimensions().size(); z++) { if(UniverseRegistry.getBaseDimensions().get(z) == dim) { diff --git a/client/src/main/java/client/gui/container/GuiContainer.java b/client/src/main/java/client/gui/container/GuiContainer.java index c9975a92..e186d35b 100755 --- a/client/src/main/java/client/gui/container/GuiContainer.java +++ b/client/src/main/java/client/gui/container/GuiContainer.java @@ -127,6 +127,10 @@ public abstract class GuiContainer extends Gui s = s + TextColor.RESET; list.add(s); stack.getItem().addInformation(stack, this.gm.player, list); + if(stack.getItem().isAdminItem()) + list.add(TextColor.RED + "Admin-Gegenstand"); + if(stack.getItem().isMagnetic()) + list.add(TextColor.LGRAY + "Magnetisch"); if(stack.getItem().canBeDyed()) list.add("Farbe: #" + Integer.toHexString(stack.getDyeColor()).toUpperCase()); diff --git a/client/src/main/java/client/network/ClientPlayer.java b/client/src/main/java/client/network/ClientPlayer.java index bd82f50c..6157c835 100755 --- a/client/src/main/java/client/network/ClientPlayer.java +++ b/client/src/main/java/client/network/ClientPlayer.java @@ -28,6 +28,7 @@ import client.world.WorldClient; import common.block.Block; import common.block.tech.BlockWorkbench; import common.dimension.Dimension; +import common.effect.StatusEffect; import common.entity.DataWatcher; import common.entity.Entity; import common.entity.effect.EntityLightning; @@ -116,7 +117,6 @@ import common.packet.SPacketTrades; import common.packet.SPacketUpdateDisplay; import common.packet.SPacketUpdateHealth; import common.packet.SPacketWorld; -import common.potion.StatusEffect; import common.rng.Random; import common.sound.Sound; import common.tileentity.TileEntity; diff --git a/client/src/main/java/client/renderer/EntityRenderer.java b/client/src/main/java/client/renderer/EntityRenderer.java index 7b73c65a..5eb6e721 100755 --- a/client/src/main/java/client/renderer/EntityRenderer.java +++ b/client/src/main/java/client/renderer/EntityRenderer.java @@ -16,6 +16,7 @@ import client.world.WorldClient; import common.biome.Biome; import common.block.Block; import common.block.Material; +import common.effect.Effect; import common.entity.Entity; import common.entity.npc.EntityNPC; import common.entity.types.EntityAnimal; @@ -24,7 +25,6 @@ import common.init.Blocks; import common.init.Items; import common.init.SoundEvent; import common.model.BlockLayer; -import common.potion.Effect; import common.rng.Random; import common.util.BlockPos; import common.util.BoundingBox; diff --git a/client/src/main/resources/textures/items/dna_sample.png b/client/src/main/resources/textures/items/dna_sample.png new file mode 100755 index 0000000000000000000000000000000000000000..1cccd8d19d962008c8a7dd3fabfad542b380db09 GIT binary patch literal 5061 zcmeHLc~lcu7Y~|>tXf4;6bwN?tl9TS1SBjGB8aIXE-;yygdwY0Bp^ryaY2@%6~*0B zfvTuQ7BS+673+eu(%M!~3JA(qiwc%j)P6Go6;FH4cRc6oePNrpUW02%6q-+U)-2^3Lnf;Wg-5tMs#Xj7$VBMz|dE-`w4|MgY zUtaindcqOA?xOxFKMZ6~)rnV2d`UyysOJ7VC=l85KVdxrkj zkYAuD`pp-ves*hf5#!VB>`8M4u3z8Ge?$u?$uKAty$kAIOw`T3#83RZzCJqyG56#& z#NX;+<7&J2J9TlV|+Yeqmeo&imw?BLN^#52@`f*s* z?0#+`+8$4qYSpwC;dF*_`!Lkq>cky3hFC9~Pvf?22&in-jA({$}Qc zCsMaKkDT+(rVIAjk$wTj+2?xCtjJhwm7(768#8^xk0~cF=c>Ke{wlPycfC|(?bCGA ziZC~R1JpRa;GD}QkBFsljzU~iK;+!+Sp|$qgsziBQ5Dgxc}8Ai^tgBqTpu~*{>mL| zZM@xFi{oajouzQ?_Kps6@bqrrcb&GIzufT6=IT31JsHzBNNvX*u_6C4Hhul1Em<+f zZdPeRlM~O@QS6**zW~hkahIict^3|)ln>mnMYYOnU}|~ij)eh#IxSuH*wcyh)fZPj zp4pJsttgEF#W^nXzWk|kr{(~%nPmJd#`&fyv8BJUvVQMGg?Cv*zx9!Czj5gacc?oa zoxxuBApO$Hwo!6Ic8(|2ZPW)d;@x(u=Kb&_POYs9a`T?*A>wckGbfGAsQS=6f9vcz z>!OSrzqaf6fpb&RuI`@PlzO?Dp*a?PxLscQYqslhu73-@#ktn&2T54o{tflpRk`1V zhnjc0hqP28&u6aj-5EQ1)mUR#$j_VacOHI33GO}n#Ym7*mRi%=|4Tf(vE@v&)5*O@ zJ|17p=9a5ZZ(bIhwKCh}@aTSCAbj(CPg~uyShStN=PviywkGoEn3@Fu;Tzr z&QJ2X{pZ4pgTJ%w%FX4?CsM2T8~1)*QJLQ=cQsaY&nro_E3Aq8eIz8ExRB_g@QUwxexqnI zudn3c$ESi%k2xuGz3W)zU3GBV$x^*OG0Cdrt1~06oQ@~s)-TSnDGWE>?H*V6Yk0Z0 zvNQM|zPw41TYa%D0XOd!*wJ;xZ_GzKuN0nhU7M7iGwpl`voXFQ;n~K0El)3Y$87)O@CxR>J+T#${o6No9{6baDK;v)(GZSLjeAzA~XQ4=suK&mks1VkcgC%lSJr4@@`)2sDEDxi8$On{a`BU33V z6=k@G-Vn43B^e6nA3gLEw82xNV7iOrKrIZPgt#R9p*s6=YL z0Z@Z5Mun1-5tN4kfeaKzBk`mVo5TbF28l167gkw_(Akf9C&VmP8Un%)>Bhzee405COa92T9J%lgc%ZrP19dQ9(C8!@jZ#3wLLy+Eugzj~J3)W} z5CR4mC8g3?d@6@eqe*B??1sVmh)U;Ehv794B1`&TXl(Nkd1rcqY|-fB?7^+Dfj?5n1UWy1w)oNQLaG~7!RoBFxowa%JtPa@(-l|Fr*ARiw%%u zAcIa~@>nnlfEW;o$z^icR2jel0O{N8dX3DG2v!sgQ6HN8J7*$)i-w4Q(oyRNTq zf4uR~mSRMuQ9ChR9I`%dY*Ck#+!U2n8qCXW>LT67U0iAZNzXt<49OdTD}} zF^uY#XT{xj1J{w%u;#3F9D7%O@q^0CF{|&U>vNwbmo?NJlD|mCO?BK*j}KZ9YHlf5 zam>4c_r%xRK5)sbiMUDNZxQZS=_z;9Qnzit>iNkE-|g_GLs8Yjz^#P8YBFQe<&;0h YXA-ykaF5OV literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/items/npc_spawner.png b/client/src/main/resources/textures/items/dna_sample_char.png similarity index 100% rename from client/src/main/resources/textures/items/npc_spawner.png rename to client/src/main/resources/textures/items/dna_sample_char.png diff --git a/client/src/main/resources/textures/items/npc_spawner_overlay.png b/client/src/main/resources/textures/items/dna_sample_char_overlay.png similarity index 100% rename from client/src/main/resources/textures/items/npc_spawner_overlay.png rename to client/src/main/resources/textures/items/dna_sample_char_overlay.png diff --git a/client/src/main/resources/textures/items/dna_sample_overlay.png b/client/src/main/resources/textures/items/dna_sample_overlay.png new file mode 100755 index 0000000000000000000000000000000000000000..79a395d900395be2b26adbfe630f30ab34cc2d43 GIT binary patch literal 5419 zcmeHLc~leU7LOHCz=cH=Q6R>uxFnf`><|PJWRU<8mWTpQk|Cs!#UwyLEC?z>1w;@L zK^7GiL@kOuKv}eqqKK`43sMzOaHnn*5%Eoe3!e6zcRc6yKa(?)nY;YHdw=(SH<=`P zx;stNHPuBR5Yt?onO^XxzWSJ=4WBJuz6TMANup?Pj=~F!L`r3nU||@9R76Q3B%~Au zBM{2YGQYKFdM&4p2#il@t?HSdl@OI{Wu1NB12iW$hkJ;tRkk=SzNPoV&8&C*1Hq%` z8(Xe%X16;H%veY2{8h)8-n9GpVza^M))lG}n~HsZG=vyt;zvvJ2TSu(52sre_L*y6 zwXtsPPYvlG8pi9VInas%vGM}SWJ7Z^!enROn#43y^F7jQtFtN$%~rHo_~wJLZ!PYg z>jBaLzxmWZXZ}1f?p40kE>9ihu6i?NXQ|_JMR}HPV%HmCkimBU#2+Ln`#Cp>)e`cF zur>P^z3AcBUAh&)cy@>}Xfr}N)v>0xKf=SwWP9M*JF#WPqU$+7C-dp+p7s}A^Ez(& z#NF-p!@d(k%z4ov&Z`Hldwh@37`pd=RV7)ozt;{(S#Ipwek2eop1M7&v^!2$9$aPW z^PN*Ge&_-#C4sr*Zu-I*omLeHhz8NCr*Z$@|V^R^L@n*5!P72qJEbp%Wg{OfT?lriw2de6q~Ov>OqMs8{?e)Bq}-c+-T1_?7S&O>0% zw@+WMZV8h! zCnX2vWPerhyGozflx^7OW*K5E}Qx@ zI1EpZ#mD8^=WlSn>n&s>?B)GWJj=7J<$0$T;ET@V?5bPW6tQKN4Fu^*>FmxLR2lgCiB4w0^D640@HrVK<}W&7Z}l`nVG32fQ|V zeZ(*HQB9BP(3^B{;_4vj!P_n3A47-tT^+$n*N5Fs>A4?`zMq^|6<9W_bNi!TX|k@Z z9iiG6>z2m)+fHR(uI=>fxUp>duGIqpRXOrjmhxEIp`AlC4x4J_@X*oJBCF4yU0o`! zdZ3t%v}^C!^P;|I;ezFt{w(lK$Tl;>Rc`5R`EJqPtBXhWSrjg1 z=lrs;#CD}s?n6tzD+d@nwD+O1)VaqcN37}|6y#hm(MfFC=|3k!)v|vj{kpUm8?&hK zertDSn~SYu)2`w9JDZZv^;cBurKb$SxXY1Hk=JhKcM}hgp0h{l<+d+pq*J1XTDr88ufh+Bf0hNncY=WAME(g zJ$zBZg*SG?nU-ESM4R@p;4{28!_d?7#RiGx6VDI$cNQ9KQMuhD#m?Nf zvZT>KmaWxH$(VM!ggu*Lcg?iYd4yj(Z^GtU$Hm+%3&UA?cXYFVxK+JMFLbls2}1l# zSEs$BmBy2gK4c6Asq`6%CtZ=SM*l0}_gpNp_ouI@VQ;5=*bp*O*vwI%v2GJ@{M8{lp z3leBO#%=0iFgJ*66pB--^*Z9_bJ4e|Q~OMs?}(lI#F^zrd>egpYYI7W8Fkv;=GL8q zqTuDKs)(*!Ud9r`#%H;S=~4MXvA#KxZFLuC1aZq=4UEK2cs^s+K>C{l^WlN46vBg- z!*ZkXBq9vRmvAABQY3{3GXi0=LMa7#p^yT}g#he8VZbd(>F1+b(HC`9NS zErZz6?%urUP#%?!T4AeeqolzAB1i!um7*}QoTj9sG`KYQS}n$+kQx(3C>_ONc_JAS z8H6NY2p9nEs1!!vQMS5B8yP>C=EYq30Rq0Gqe2u4DGiH_jEuxYT45wI0TxH4Qn3IY zi^rp33$#2+tN@j0v3!9VVhn=`$$2uNR3Vgzk!nnkD+yQ7Q7BlC{1~4|%3^(j7t24e z0P}%Wf>JCF17JlW?065k!Z88{`4G@QddR)u?=P$uB$tHCc#vZRBvvdK55ebs@|T9o z!Zhjdc~~e662Yc&cvajNOFFr*JU@A;DG&%nQjHf(_7|24Ven_NzKBh&(WEmz5ZL__ z?ibb{bJrNdRxB2cDdB~y!*gNMQR?++dCWN~Z3>zPn8j24?k#PhZ8G!I;ycG#R6R5mkG)M(0Xd;D7##vcG5RV9I zp!hu6N{LJa!sQf-Kmml6iUk^lnsA!Erwbj0#{i!to?)OO7FHo3WBR3+3?oQ5wb3puz%ykMq@B; z$iRMMGI)5wvk?1f7=GYPJ$C-Z*N0mCiz~p;-xm2Qe!tQ6jjpd^;H!+kb=Nn#zKVgb zGXBb>MKR8?oKWJ%lS2-~e2h?x>g&ykv$8@C5Yvc%oo{{>P zfXK-;frXP5E-c5%4=3wQokH%e7iA+56KY(T_TH3Bc^Mv|MyqEw#$pd{n9@OcbqI}F zx^(IG`0AZm{=Xc$u{)qW@3HBvE5H^z{m2IF-Bt|Ko?oyvtJrImo)2@~lw?z#i1Zbv z#kFp2>&SV(QE2{Go}E+C|JpCV?Q`9{YjNDh$J5_71;)R(U;b!AOmOnD45M_dN0EC{ zdl7(A9xtmn-*jOO#@s#Qa`1ciyOinvp)QLuI9Xf6qd4b=U+hhntT@P7UJ_$#fwpH( zNfzBI9*Ap98lA8McPvIZ`)R{a%gl$(bMv@m#I@GeryV&Shua@07Tt3h@oP#*(%R&w z@-A6y|Hog#Ar?Q%r`3O!WScf)SMSD}pt`(OiM4YK$iAa2Fsr zIh)$i-43p8HKT^YRf3Tm-01@O^z}P*HX>1(t_#mzBPG4;_l~kFZQEyzxNSi%GAGZ~ zEfD;eB)T)h=$?$~Tbl)x&C2hhKHp!bf92)9w;6)WQsX95)>s4Kr z`RR^|$z{X}|7iwEqt5njo7W&j>${)Px25GB^t4nwU2WM^9}u^Sp-O7xF0b8mxs$zz h*cE$g>$|W&J;Jj}$!!W-9$Z<3i=#X9xWoGR{{oJ&I4b}E literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/items/editor.png b/client/src/main/resources/textures/items/editor.png new file mode 100755 index 0000000000000000000000000000000000000000..2cb6dd74246cb0cd20538d2672721a7ded5a2614 GIT binary patch literal 1421 zcmV;81# zaB^>EX>4U6ba`-PAZ2)IW&i+q+P#-)as#Ulh5u_6cL@lIX*rBlcL#6z_dwH~ct|RC zQm-kSp+Ow<39zaE@83cH;IXWp)P?Ai_Xdw9O*W$t&G8&L8(rVKV$Q-%J6$g;P7SPZ`7oJHnGBqNXbwi3~ak>~X$i;92lJGzQ@&bvx?zB75Z%dIQO_}#(Z z`DnMZyK9$g8hcOeocZR378A_p=acWoXmN~wtS+mEr#$UNol99IbSy9>YnVq0_&Aiq zN(m`qi50{eXcnYOoY=zKgOwX+9^6-6xk94aZUb^_tCiIjCD>%EOawX;4;v&&Bhax@ zK~2zXFD<<0O>4f&5i>VNPs=biDLy26*7#1k42>~Em)XS2SI}i=Ohd*bH^0#fKzMAQ zy5--M=u_O7PhbTE-Ewop0<$THiQ@Ppwq$V@^m9hZ99x4!+Xmnw%xTKKOY?jMex$mj*rZ$P`>K8t!p*e)p1kdBdO=ciwl|ejA z0tje3nVHC{c9NUSOqvInv!KRq!f8B-fuMG_Zt%tKgWR{=$mvVm>{sMyqWcSSG|_Ex zkKCS6YkA!$vH;CpIDKkl;9x_C9)k5vu*~z>Revdi56pr7BBB=TkQS|E3_!Ucf z4)b+Y^v;3(%vJOO@OQ3y_ZE3@6@44`FQ}s5|AIIUJGw48dx~Kl6@SC>)@o~SKR%EC z>|p!98Im!B!q9({fGOMSgQu|o000JJOGiWi{{a60|De66lK=n!32;bRa{vG?BLDy{ zBLR4&KXw2B00(qQO+^Ri2pkFmE)HGD=Kufzw@E}nR5;6HV4w%+W8nPX$H4g?n;a7{ znnfGGGl({RXJFv(!!U$}7|r*eF);9OVpqdNjAjM~28J)+85kH?gc%q_4*w^~3ox5s zy<=c#3W;Z6_^}H`o{^9j7#J8BPP=?(&{T#PA|}MZP`9Fwf#G8jBS9AwF??qfW?*Je zlV@P4TUyH?CPZTNEo9*NzpRz!{eM> b&6EHD)JaZF{DuFa00000NkvXXu0mjfFu|pa literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/items/info_wand.png b/client/src/main/resources/textures/items/info_wand.png deleted file mode 100755 index 63fcda94b0b898c91e8bed6b890ba175ecc4953c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1377 zcmV-n1)lneP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+P#)*lIti8M*p*lSpt#}63f9ns%8hX{1J~hoph3$ ze$iI0xVN zgP0hV%}MC65sGm_dMFq`L8VEgN{4luL~fQ0&jvmU$#Q z)V5em^lCH@JBot@Xli!|P$5HyHf@1oOAOdh%pw+~=~EI+SZE*!KDe1sfDU9qy6yJI5KQ_mR2)UQexTT{sfZmNCeUvyCz!(6^>M z^__?NkT?DVSTceNRh0zLvUMDT(r z0H&iFpKL2f3V0X+V8#lr8yli%aO`QYx$Pc-ITjh0+e(XpV2UJ$CQ&w6A+Y6-1hpK> zOdK3DM;2C2oFl~$ImRe))Tk^ZL0F=Qs3gfs8k9AvsA|%jFp-roPBDo~no`QyCe0Q) z+uhklkM>zP1ha7sOBNt1b5(<}Cq-aScSFBX+@vpIpt6Edd4VtA=3yoWB(zK

o)CRFI$H|qNxkWA^V3ZRc%#0WYFyb-@SVH4q z<`qJ~L2fYfX%sL<)pt`>$c86x$w573Zvo1;tEXXQIV3bb#)H4wWKxtD9JLj9IIm= z4*F?-?uP=My0|-GWDCe@Po~e%eD9>>OhQP4|DO9at3{kWQ@Sq&dzHME#gDA}N;ZeOwmegKKi*Z9E@C&J?0fe4%o-|^ zx4sSYyQTJBWG&?v^~PNbPE-7xIrag60j~K~vbwKiwS5&lEy?alF1H%*clKH=_l-JT zS9%{=OSo3ZuRT$}yQ04rsM}{$a{mKIoX@V+qMcR%000JJOGiWi{{a60|De66lK=n! z32;bRa{vGf6951U69E94oEQKA00(qQO+^Ri2pkFmHH0_;3jhEBvq?ljR5;7Uk|7Sl zFc?N(2P8|DC72onj-(f;K{q73%P4k0{ARcJnN%J? jYmL@Az95q-z(36w4R2&v9<-N@00000NkvXXu0mjfC18Te diff --git a/client/src/main/resources/textures/items/scanner.png b/client/src/main/resources/textures/items/scanner.png new file mode 100755 index 0000000000000000000000000000000000000000..b457495bbd48e896d0da1447d36e12ee35f265ab GIT binary patch literal 4874 zcmeHLcT^MU7LTif(i9X67RI0;YBG}s%+OSV0vbSw5f#fMnS^K>$v}dx4GSu$s83yr z6%;}AsTA9)sE7qbTtr1ISl;3jg$H(?=zbFr@$8=Sj_17n&m@z~-17VG{oVWBGm|x; z!4s`594u%wnss0RKMef#rj8zF;M?)lXPidsrduG4Aj5D2q}6F;3MB!NaasZ*j0zcz zX1se)G;?eHNUM)>`@C+GprNIY;>z!z8?$6>!u=ypUJFiM@;TBsY32S=U2;DCH!FLI zmW7HYq#rwX*Lqt|XYGn7$KozFWnN3FYsq_Ao;_;_JV4+ex_qg>RDbWApoauDElZ1gg3 zhtsixJ?gJGs^`5REBqHGr@OpN-4GdNHK;JRBxTP@@LHh!zyr5CGdndakcv-8~2i)d@K<2EVt3u{aCjt)CL9A-@)aLwXn zL|M^_sKnG)b4SLHk#uW`F7fl5l0U%q$m8Nk$x#J7QEox`TYnbzGD-J1S6_arcF*kx z#->}Ijf?)n(pE%pN8G86?=`G=HOq-U@#i5ohLsctx@_i;NQ-QC&HQE9PUTT)+N`(e z(}?5G;@@Q4dAt_hT^wW|ma{LYpla$IzjfAO^JnlXGpm13)$G2wyuiP{vbD?n{D>## zgpJQ^ZdE+LH#ELQN8irry=vBqqT}^_$5z}!YrF=DA7{ZXQ#)-{;qV`W)S`C~x7> z=T(UzFXhV|4#zbGwYsIu%gQKQ-J^D7 z3VXadnB-uc5YE{Xo%_KRyLQLkylzEi;V((a=dN53pu zwpNLh>#*0~rur)1bE+~d#I+b%Ue`P9aG!*JN6gh-m6Ow+Sd{cTI`K{UlHH+AbWb<5 zM&o>diIu*6ug>0M&z`D*$>@kTK_0}$O11?@KgM#)yf^VHgGGyY$Il;)JYe8PSELou z?8e~z?>XjTeVThbl3&g~HtMy#F7j#;b9QxUHIUi9_llraXhMp167Bq^opiWlp~Mh~i4Td(>ddvlRt$ zWP^S4zm92w!tal3TE%Tle2cYi?t8Y&d)qm01}$}LnrdFu$V`HZgqn;G{gJ9(7Ol5( zGJbmAn3=uRv8?<~R`!?!I}%@Qj?`YRe)p+t$;@>R^Pb23qtTG4F>L(&$VfW&s4Lv{ zsjJn8UX(|s%;FP&6|h4Ck}Lx3x9dK5`&F&H)& z3`_%usnN+{7K)-U!iL#w2C!i0WT^E{6hs>apU_Km3N5M7s38gy7i(fjZ#o_5 zp)c{Nv;si~yjtJR0^kES;#!!+L|~N)?(Cr_{bK=0dq98bp%;Q74u=tXO^i-L_{S1z z(y23qRMO$EjnOGh=}09op(IqmR1a2VeY51mKtX7S2StHgq0*YX0NLMIk_y>Zvc8Fp z(wNfe90+jl!2QPhOYSCPU?mV>e2pZA3NMiFO{dn!q#B7rikVJXgaqZ{TrtDlop57t z5k$7P$f>vfP*)EvO*nW{HhQt zR75z5Q*5%_d2BYv4dJ02wwpT-{c0p4bb8Q<6ebH{a=0c9RTc~+1Bk_`J_P_KImiX` z(-AnS(Frvgr8k`l38FkZ)B>=bq&SK5agqR_2%Co??ihV z0j5WLyMB=?{-PD!Ik*I8<0yl}0Y&6WWF8DL+k;@B9D?A8Q3(&>wslhnx?UqA4Y-aN zCkH$Nu0VU5xPnHS3gv3zti#$6MNm}$gn{m2{FyMgJznT2?+YJ$anGkgRUQReHR1YW&ESNe$e$@41AaIkM8=v z(Pi=Vaf(obyC4I2Sn|2-NIhtoi6>3u(=w>{j1eK!pF};i0n_y~nq?pA=t4_P9{_~r zWT3#`{NLu5RyKVSQ<&F*XiFe}oY156U^vTWIb!9N^D%R$_`2jyUY$#|r{O{$%T4CP zHD%-;>v-pcTIZTIA!jC8Me_5^hOJnsva?+susJNgw3o2pu2L2{_16bZG-XfPuKFGR z@r6U&PI#XAJuL=q49I${{YR!IWPbK literal 0 HcmV?d00001 diff --git a/client/src/main/resources/textures/items/spawn_egg.png b/client/src/main/resources/textures/items/spawn_egg.png deleted file mode 100755 index 26cc6b22c899a2fa6f83a90e38918bf224ab293b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL9r6oh?3y^w370~qEv>0#LT=By}Z;C1rt33 z>la@$fhul#x;Tbd_%EI8%hhZk(7HFye`4#7&wO!*xWDM>UD59N!7Q{nu<&8oDe1`x z(bDz59w-Xe-tS@lD0lwGuW5Pgy)g|MT^c;jm!6hRP4%ptC+zU+#jYtqJQtsqp8f2T zd)w&2hjN3gK#_0CE$xX5mSt+3Hrgi4#IURPvB&96AA-Fynf(|JMcgvG@cr*?m*vY| z?COh8`m$=31jB3t8J2_j4zbrwe1#K#udrvd5O#XQd`9SEr2Iyo4*?7+o=Mh{bJ-js z1ajQkE}N*{|Gr=0T=kZ_U*aTwy=GhAw^w|z=8MIVQ}nL^J;~td>gTe~DWM4fE;x&Q diff --git a/client/src/main/resources/textures/items/spawn_egg_overlay.png b/client/src/main/resources/textures/items/spawn_egg_overlay.png deleted file mode 100755 index 83ec78f172c9aa50293d688829e1760f44e83a2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 402 zcmV;D0d4+?P)=bg)Y0ijfYM02gVjk5sO#BEsK+Wb3I(=;R%n@^zJ-*Awk zC^)mZTrOj^TE!p;@H~z<#4rrZX0y{Fs;Xk8QbF6c(epgK9rmHrc>&9^aB3YoYN7E6 zVHl$C`{**W-S5G1y8*j*4p%CK0F+i6^x)xZ2$#%!+U)>U(sdnE0c759KEp}34U`^5 z5uSa#L6M!vahxB(L`XiL=fg9j7Q}IkHI{zxTIZEWiJ7#tvHBa3%jI~=QL7GDgHO1K z-@$cV90$;l7lf6`HTKxYhYVtxCXRNeog_&TrVdfQws}%wrhAb9WLZX06w~hl4Tv<_ wd539nU4U_O>N_F`C1x@iB=f&M#L-{CH_qD!`X#&Q#{d8T07*qoM6N<$f^xjK0RR91 diff --git a/client/src/main/resources/textures/items/lightning_wand.png b/client/src/main/resources/textures/items/trident.png similarity index 100% rename from client/src/main/resources/textures/items/lightning_wand.png rename to client/src/main/resources/textures/items/trident.png diff --git a/client/src/main/resources/textures/items/wand.png b/client/src/main/resources/textures/items/wand.png index 2cb6dd74246cb0cd20538d2672721a7ded5a2614..63fcda94b0b898c91e8bed6b890ba175ecc4953c 100755 GIT binary patch delta 1358 zcmV-U1+n^#3*icoB!4e@R9JLUVRs;Ka&Km7Y-J#Hd2nSQWq4_3004N}y_Rc|>nIFH z|Feo&0+J9C%fURVW(TwU5sx^XbdsBX)Qu|^$XLL4WZAC$_iuOq*bja5F0g1!F?#!j z6cT1@s9(Qj!H0R?9e-)u_}zH{%|&Kubz|G(v-$aYgM{rrZh!qw%8sKu&?WK?NMmNS z#vZ3T5aIH}?z^<_%i+Uz_Mc>iI0xVNgP0hV%}MC65sGm_dMFq`L< zOic7xJ9jqk#5-Ge+WEZwbSs7PaSw=h8f`!DW9_CwchoL3-(2YNoZ^#qy;tqMt=;7i zO{wVirY>8VEq@z$n3PM65m4;U)|PoBJJhyVO!R6r4?Bv31ZZk^2v8wIhc<12VoMCz zP|PA0r0G)JDHM+1zZ40WtzU0x?AJf+zr{qZ*%VD@O`=7y)3$3a%R)qG)jJX|TEN z9)UR)8JF8ii-BN@B!(tYHdrCB<&Oll9Lh`_95Y82R!*EF#Sl5hC~?%NEF?i#qKK#@ z$x0fOHGit8YSNrAk(Dq`F^Nl>Qp(vT%@#V_-PuOueBePxIQWQ%9D1Z97fYWK3YS=< zXh|hktW@psud#}&T2svpnx#?;jazKew56825$(5S9MJ^#=loKAzj2H$m;xY(WLgQfO6@Nm&L2fYfX%sL<)pt`>$c86x$w57 z3V);F#^MT0=TVW8uXS|}wY8)*{3yvXvmC2q9}fCyf9{6@ow~R?VPp%_D3uo0@Q$I? zKgr~NL7u6O`zX(G1ctz|1S=u4X)pTfBiGU6l4Du!@vU`d-LngSuwpNn+4lA(AJ(zt zAP9RgB2b!jS0|ywlw@@<9e&^Y$hv12UVm9=n)b?~U)ydjK~dhR6VWQoYHDcuMm}Gy z`vIt%GWGI=D!@O@7Y%P@SRS;O QjQ{`u07*qoM6N<$f*JCJy#N3J delta 1378 zcmV-o1)cig3XKbpB!5?WR9JLUVRs;Ka&Km7Y-J#Hd2nSQWq4_3004N}y_acn1FH^& z|7#U@2?&X4IgC|z2XFcJK+~OgNGf(xuPK|MK^*i6u&Mv=-$DQ2v8;P7SPZ`7oJHnGBqNXbwi3~ak>~X$ zi;92lJGzQ@&bvx?zB75Z%dIQO_}#(Z`DnMZyK9$g8hcOeocZR378A_p=acWoXmN~w ztS+mEr#$UNoqtPNC3Gw>C2N>R3ivpb!%7J$Vu=;R8fX@zN}Slj+k=%GXCB;FUb#Y| z+HM1KYpa#j7A4qZt4sts6Av3CNh8p)QbA47Y%eXm=1pt9$`La+Mo-HyHYq+Nde-<( zx(tmmLzmga%U954XG}xJBsag&3qW{mpStDWmFQF4n14@T1q9u4bHoC(DTj&T_#?Jt zaTfG*M#&sogG1W};3CZJAch45jAwD|*#v6?GyE9ACquavwFLy&Iop^9*ob(*!EV6Z z7!!E)way;RI9dS0iI)I0NitxmI>b-Vh#1OFoRV|SyWpZrE_?Cno%cTYc}C?RL4ylE zgb+gtIe$vj=%SAy#+YJGHVKX}mwXD8VoE7zOqyXjV{}H3oQo||w7B9+D6yoHE5fI0 zb=B8UV@)+T+oWOpH{Sxa*iy@#J3^^zcis2UV^2K~#M+Rd!wo;eh$D@BQQK5+sqr1T z@2T;oHi_x#7e1(=IfT;$&*Q{RW*}yjK|D+X2!CihnVHC{c9NUSOqvInv!KRq!f8B- zfuMG_Zt%tKgWR{=$mvVm>{sMyqWcSSG|_ExkKCS6YkA!$vH;CpIDKkl;9x_C9iaZRheM@Q$(H!k!O;||9wrktN*e3YF^M*QlCi4rGayYo- zmdNe!Ag&TQ4_@ zQE)p27sNujVu5ag;TJg_+KSy`Do(N>x$i3C6u+HhZ|31udWb{!>%rJX@o*f??IrH) z*bv}9-d;C3eeKt}R}V>z>(F+_LLG^vy3<#+&e)(Ex-IR_9S*Oj$sZ}CpOe2;*l5eH z8W6|TLhany$-EGLk2$>*j^BtPsQMF8^y<<06-#;!^L179&Vl{RRrCSycdmN(7I|wV5K# kD9#=lHpAnbT+NgK0MtoNP5g!bp#T5?07*qoM6N<$f{!GiKL7v# diff --git a/common/src/main/java/common/potion/Effect.java b/common/src/main/java/common/effect/Effect.java similarity index 88% rename from common/src/main/java/common/potion/Effect.java rename to common/src/main/java/common/effect/Effect.java index d3ef0dfd..1d6503c2 100755 --- a/common/src/main/java/common/potion/Effect.java +++ b/common/src/main/java/common/effect/Effect.java @@ -1,4 +1,4 @@ -package common.potion; +package common.effect; import java.util.Map; import common.collect.Maps; @@ -7,6 +7,7 @@ import common.entity.DamageSource; import common.entity.npc.EntityNPC; import common.entity.projectile.EntityPotion; import common.entity.types.EntityLiving; +import common.item.ItemStack; import common.vars.Vars; public enum Effect { @@ -143,7 +144,36 @@ public enum Effect { if(entity instanceof EntityNPC npc) npc.healMana(Math.max((int)(effect * (double)(4 << amp) + 0.5D), 0)); } - }; + }, + ITEM_REGENERATION("item_regeneration", "Unendlichkeit", "Trank der Unendlichkeit", false, 0x3f00ff) { + public void onUpdate(EntityLiving entity, int duration, int amp) { + if(!(entity instanceof EntityNPC npc)) + return; + int k = 40 >> amp; + if(k > 0 && duration % k != 0) + return; + for(ItemStack stack : npc.inventory.mainInventory) { + if(stack != null && !stack.isEmpty()) { + if(!stack.isFull()) + stack.incrSize(); + if(stack.getRepairCost() > 0) + stack.setRepairCost(stack.getRepairCost() - 1); + if(stack.isItemStackDamageable() && stack.getItemDamage() > 0) + stack.setItemDamage(stack.getItemDamage() - 1); + } + } + for(ItemStack stack : npc.inventory.armorInventory) { + if(stack != null && !stack.isEmpty()) { + if(!stack.isFull()) + stack.incrSize(); + if(stack.getRepairCost() > 0) + stack.setRepairCost(stack.getRepairCost() - 1); + if(stack.isItemStackDamageable() && stack.getItemDamage() > 0) + stack.setItemDamage(stack.getItemDamage() - 1); + } + } + } + },; private static final Map LOOKUP = Maps.newHashMap(); private static final String[] POTENCIES = new String[] {"II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"}; diff --git a/common/src/main/java/common/potion/StatusEffect.java b/common/src/main/java/common/effect/StatusEffect.java similarity index 99% rename from common/src/main/java/common/potion/StatusEffect.java rename to common/src/main/java/common/effect/StatusEffect.java index 153a94c0..a8ceb404 100755 --- a/common/src/main/java/common/potion/StatusEffect.java +++ b/common/src/main/java/common/effect/StatusEffect.java @@ -1,4 +1,4 @@ -package common.potion; +package common.effect; import common.entity.types.EntityLiving; import common.log.Log; diff --git a/common/src/main/java/common/entity/Entity.java b/common/src/main/java/common/entity/Entity.java index 9e411c8c..fe707344 100755 --- a/common/src/main/java/common/entity/Entity.java +++ b/common/src/main/java/common/entity/Entity.java @@ -2624,9 +2624,9 @@ public abstract class Entity public Item getItem() { String id = EntityRegistry.getEntityString(this); - if(!EntityRegistry.SPAWN_EGGS.containsKey(id)) + if(!EntityRegistry.DNA.containsKey(id)) return null; - return ItemRegistry.byName(id.toLowerCase() + "_spawner"); + return ItemRegistry.byName("dna_sample_" + id.toLowerCase()); } public Position getPos() { diff --git a/common/src/main/java/common/entity/EntityTrackerEntry.java b/common/src/main/java/common/entity/EntityTrackerEntry.java index 2d16680e..54c514df 100755 --- a/common/src/main/java/common/entity/EntityTrackerEntry.java +++ b/common/src/main/java/common/entity/EntityTrackerEntry.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Set; import common.collect.Sets; +import common.effect.StatusEffect; import common.entity.npc.EntityNPC; import common.entity.projectile.EntityArrow; import common.entity.types.EntityLiving; @@ -24,7 +25,6 @@ import common.packet.SPacketEntityVelocity; import common.packet.SPacketSpawnMob; import common.packet.SPacketSpawnObject; import common.packet.SPacketSpawnPlayer; -import common.potion.StatusEffect; import common.tags.TagObject; import common.util.ExtMath; diff --git a/common/src/main/java/common/entity/animal/EntityDragon.java b/common/src/main/java/common/entity/animal/EntityDragon.java index 2c590f34..79c15072 100755 --- a/common/src/main/java/common/entity/animal/EntityDragon.java +++ b/common/src/main/java/common/entity/animal/EntityDragon.java @@ -3,6 +3,7 @@ package common.entity.animal; import java.util.List; import common.collect.Lists; +import common.effect.Effect; import common.entity.DamageSource; import common.entity.Entity; import common.entity.EntityType; @@ -11,7 +12,6 @@ import common.entity.npc.EntityNPC; import common.entity.types.EntityLiving; import common.entity.types.IEntityMultiPart; import common.init.SoundEvent; -import common.potion.Effect; import common.util.ExtMath; import common.util.ParticleType; import common.util.Vec3; diff --git a/common/src/main/java/common/entity/animal/EntityHorse.java b/common/src/main/java/common/entity/animal/EntityHorse.java index 18423932..b1be0fe1 100755 --- a/common/src/main/java/common/entity/animal/EntityHorse.java +++ b/common/src/main/java/common/entity/animal/EntityHorse.java @@ -13,6 +13,7 @@ import common.ai.EntityAIWatchClosest; import common.block.Block; import common.block.SoundType; import common.collect.Lists; +import common.effect.Effect; import common.entity.DamageSource; import common.entity.Entity; import common.entity.npc.EntityNPC; @@ -26,9 +27,8 @@ import common.inventory.IInvBasic; import common.inventory.InventoryBasic; import common.item.Item; import common.item.ItemStack; -import common.item.spawner.ItemMonsterPlacer; +import common.item.spawner.ItemMobTemplate; import common.pathfinding.PathNavigateGround; -import common.potion.Effect; import common.tags.TagObject; import java.util.List; import common.util.BlockPos; @@ -794,7 +794,7 @@ public class EntityHorse extends EntityAnimal implements IInvBasic { ItemStack itemstack = player.inventory.getCurrentItem(); - if (itemstack != null && itemstack.getItem() instanceof ItemMonsterPlacer) + if (itemstack != null && itemstack.getItem() instanceof ItemMobTemplate) { return super.interact(player); } diff --git a/common/src/main/java/common/entity/animal/EntityRabbit.java b/common/src/main/java/common/entity/animal/EntityRabbit.java index 48058356..c61374f5 100755 --- a/common/src/main/java/common/entity/animal/EntityRabbit.java +++ b/common/src/main/java/common/entity/animal/EntityRabbit.java @@ -17,6 +17,8 @@ import common.ai.EntityJumpHelper; import common.ai.EntityMoveHelper; import common.block.Block; import common.block.foliage.BlockFlower; +import common.effect.Effect; +import common.effect.StatusEffect; import common.entity.DamageSource; import common.entity.Entity; import common.entity.npc.Alignment; @@ -31,8 +33,6 @@ import common.item.Item; import common.item.ItemStack; import common.pathfinding.PathEntity; import common.pathfinding.PathNavigateGround; -import common.potion.Effect; -import common.potion.StatusEffect; import common.tags.TagObject; import common.util.BlockPos; import common.util.ExtMath; diff --git a/common/src/main/java/common/entity/npc/CharacterInfo.java b/common/src/main/java/common/entity/npc/CharacterInfo.java index 00e759eb..239e743d 100755 --- a/common/src/main/java/common/entity/npc/CharacterInfo.java +++ b/common/src/main/java/common/entity/npc/CharacterInfo.java @@ -4,14 +4,14 @@ import common.init.SpeciesRegistry; import common.item.ItemStack; public class CharacterInfo extends NpcInfo { - public final boolean spawner; + public final boolean dna; public final SpeciesInfo species; public final int color1; public final int color2; public CharacterInfo(SpeciesInfo species, Enum type, String name, String skin, Alignment align, float height, int color1, int color2, boolean spawner) { super(type, name, skin, align, height, (ItemStack[])null); - this.spawner = spawner; + this.dna = spawner; this.species = species; this.color1 = color1; this.color2 = color2; diff --git a/common/src/main/java/common/entity/npc/EntityArachnoid.java b/common/src/main/java/common/entity/npc/EntityArachnoid.java index 1690f2e0..92b4626d 100755 --- a/common/src/main/java/common/entity/npc/EntityArachnoid.java +++ b/common/src/main/java/common/entity/npc/EntityArachnoid.java @@ -2,12 +2,12 @@ package common.entity.npc; import common.ai.EntityAIAttackOnCollide; import common.ai.EntityAILeapAtTarget; +import common.effect.Effect; +import common.effect.StatusEffect; import common.entity.Entity; import common.entity.types.EntityLiving; import common.pathfinding.PathNavigate; import common.pathfinding.PathNavigateClimber; -import common.potion.Effect; -import common.potion.StatusEffect; import common.rng.Random; import common.util.BlockPos; import common.world.World; diff --git a/common/src/main/java/common/entity/npc/EntityFlyingNPC.java b/common/src/main/java/common/entity/npc/EntityFlyingNPC.java index 656852fd..40a73e12 100755 --- a/common/src/main/java/common/entity/npc/EntityFlyingNPC.java +++ b/common/src/main/java/common/entity/npc/EntityFlyingNPC.java @@ -3,8 +3,8 @@ package common.entity.npc; import common.ai.EntityAIBase; import common.ai.EntityMoveHelper; import common.block.Block; +import common.effect.Effect; import common.entity.types.EntityLiving; -import common.potion.Effect; import common.rng.Random; import common.util.BlockPos; import common.util.BoundingBox; diff --git a/common/src/main/java/common/entity/npc/EntityMage.java b/common/src/main/java/common/entity/npc/EntityMage.java index 347a273c..6750a0b4 100755 --- a/common/src/main/java/common/entity/npc/EntityMage.java +++ b/common/src/main/java/common/entity/npc/EntityMage.java @@ -1,12 +1,12 @@ package common.entity.npc; +import common.effect.Effect; +import common.effect.StatusEffect; import common.entity.effect.EntityLightning; import common.entity.types.EntityLiving; import common.init.Items; import common.item.ItemStack; import common.item.tool.ItemPotion; -import common.potion.Effect; -import common.potion.StatusEffect; import common.rng.Random; import common.util.ExtMath; import common.world.World; diff --git a/common/src/main/java/common/entity/npc/EntityNPC.java b/common/src/main/java/common/entity/npc/EntityNPC.java index 67b2c210..843b17da 100755 --- a/common/src/main/java/common/entity/npc/EntityNPC.java +++ b/common/src/main/java/common/entity/npc/EntityNPC.java @@ -27,6 +27,8 @@ import common.collect.Lists; import common.color.TextColor; import common.dimension.Dimension; import common.dimension.Space; +import common.effect.Effect; +import common.effect.StatusEffect; import common.enchantment.Enchantment; import common.enchantment.EnchantmentHelper; import common.entity.DamageSource; @@ -81,8 +83,6 @@ import common.packet.CPacketPlayer; import common.packet.SPacketEntityEquipment; import common.packet.SPacketEntityVelocity; import common.pathfinding.PathNavigateGround; -import common.potion.Effect; -import common.potion.StatusEffect; import common.rng.Random; import common.sound.MovingSoundMinecartRiding; import common.tags.TagObject; @@ -4538,8 +4538,8 @@ public abstract class EntityNPC extends EntityLiving public Item getItem() { for(int z = 0; z < this.species.chars.length; z++) { - if(this.species.chars[z].spawner && this.species.chars[z].skin.equals(this.getChar())) { - return ItemRegistry.byName(this.species.chars[z].skin + "_spawner"); + if(this.species.chars[z].dna && this.species.chars[z].skin.equals(this.getChar())) { + return ItemRegistry.byName("dna_sample_" + this.species.chars[z].skin); } } return super.getItem(); @@ -4566,6 +4566,7 @@ public abstract class EntityNPC extends EntityLiving this.removeEffect(Effect.FIRE_RESISTANCE); this.removeEffect(Effect.FLYING); this.removeEffect(Effect.MANA_GENERATION); + this.removeEffect(Effect.ITEM_REGENERATION); } else { this.extinguish(); @@ -4577,6 +4578,7 @@ public abstract class EntityNPC extends EntityLiving this.addEffect(new StatusEffect(Effect.FIRE_RESISTANCE, Integer.MAX_VALUE, 0)); this.addEffect(new StatusEffect(Effect.FLYING, Integer.MAX_VALUE, 1)); this.addEffect(new StatusEffect(Effect.MANA_GENERATION, Integer.MAX_VALUE, 255)); + this.addEffect(new StatusEffect(Effect.ITEM_REGENERATION, Integer.MAX_VALUE, 255)); } } diff --git a/common/src/main/java/common/entity/projectile/EntityBox.java b/common/src/main/java/common/entity/projectile/EntityBox.java index 764f9630..4bdfc4e8 100755 --- a/common/src/main/java/common/entity/projectile/EntityBox.java +++ b/common/src/main/java/common/entity/projectile/EntityBox.java @@ -1,10 +1,10 @@ package common.entity.projectile; +import common.effect.Effect; +import common.effect.StatusEffect; import common.entity.DamageSource; import common.entity.npc.EntityGargoyle; import common.entity.types.EntityLiving; -import common.potion.Effect; -import common.potion.StatusEffect; import common.util.HitPosition; import common.vars.Vars; import common.world.World; diff --git a/common/src/main/java/common/entity/projectile/EntityPotion.java b/common/src/main/java/common/entity/projectile/EntityPotion.java index 37f6480c..ca9e808b 100755 --- a/common/src/main/java/common/entity/projectile/EntityPotion.java +++ b/common/src/main/java/common/entity/projectile/EntityPotion.java @@ -2,6 +2,8 @@ package common.entity.projectile; import java.util.List; +import common.effect.Effect; +import common.effect.StatusEffect; import common.entity.types.EntityLiving; import common.entity.types.EntityThrowable; import common.entity.types.IObjectData; @@ -9,8 +11,6 @@ import common.init.ItemRegistry; import common.init.Items; import common.item.ItemStack; import common.item.tool.ItemPotion; -import common.potion.Effect; -import common.potion.StatusEffect; import common.tags.TagObject; import common.util.BlockPos; import common.util.BoundingBox; diff --git a/common/src/main/java/common/entity/types/EntityLiving.java b/common/src/main/java/common/entity/types/EntityLiving.java index 1b460e87..2cb567cc 100755 --- a/common/src/main/java/common/entity/types/EntityLiving.java +++ b/common/src/main/java/common/entity/types/EntityLiving.java @@ -20,6 +20,8 @@ import common.block.SoundType; import common.collect.Lists; import common.collect.Maps; import common.color.TextColor; +import common.effect.Effect; +import common.effect.StatusEffect; import common.enchantment.EnchantmentHelper; import common.entity.DamageSource; import common.entity.Entity; @@ -40,7 +42,7 @@ import common.init.Items; import common.init.SoundEvent; import common.item.Item; import common.item.ItemStack; -import common.item.spawner.ItemMonsterPlacer; +import common.item.spawner.ItemMobTemplate; import common.item.tool.ItemArmor; import common.network.IPlayer; import common.packet.SPacketEntityAttach; @@ -48,8 +50,6 @@ import common.packet.SPacketAnimation; import common.packet.SPacketCollectItem; import common.pathfinding.PathNavigate; import common.pathfinding.PathNavigateGround; -import common.potion.Effect; -import common.potion.StatusEffect; import common.rng.Random; import common.tags.TagObject; import common.util.BlockPos; @@ -3041,7 +3041,7 @@ public abstract class EntityLiving extends Entity { ItemStack itemstack = player.inventory.getCurrentItem(); - if (itemstack != null && itemstack.getItem() instanceof ItemMonsterPlacer) + if (itemstack != null && itemstack.getItem() instanceof ItemMobTemplate) { if (!this.worldObj.client) { @@ -3049,7 +3049,7 @@ public abstract class EntityLiving extends Entity // .getSpawnedId()); String oclass = EntityRegistry.getEntityString(this); - if (oclass != null && oclass.equals(((ItemMonsterPlacer)itemstack.getItem()).getSpawnedId())) + if (oclass != null && oclass.equals(((ItemMobTemplate)itemstack.getItem()).getSpawnedId())) { EntityLiving child = this.createChild(this); diff --git a/common/src/main/java/common/init/EntityRegistry.java b/common/src/main/java/common/init/EntityRegistry.java index 01c01fc1..b285d01b 100755 --- a/common/src/main/java/common/init/EntityRegistry.java +++ b/common/src/main/java/common/init/EntityRegistry.java @@ -47,8 +47,8 @@ import common.entity.projectile.EntityPotion; import common.entity.projectile.EntitySnowball; import common.entity.types.EntityLiving; import common.entity.types.IObjectData; -import common.item.spawner.ItemMonsterPlacer; -import common.item.spawner.ItemNpcSpawner; +import common.item.spawner.ItemMobTemplate; +import common.item.spawner.ItemCharTemplate; import common.log.Log; import common.tags.TagObject; import common.world.World; @@ -58,7 +58,7 @@ public abstract class EntityRegistry { private static final Map, String> CLASS_TO_STRING = Maps., String>newHashMap(); private static final Map> ID_TO_CLASS = Maps.>newHashMap(); private static final Map, Integer> CLASS_TO_ID = Maps., Integer>newHashMap(); - public static final Map SPAWN_EGGS = Maps.newLinkedHashMap(); + public static final Map DNA = Maps.newLinkedHashMap(); private static final Map STRING_TO_NAME = Maps.newHashMap(); private static boolean register; @@ -83,7 +83,7 @@ public abstract class EntityRegistry { registerEntity(name, clazz, typename); } else { - SPAWN_EGGS.put(name, new EntityInfo(name, origin, eggColor, spotColor)); + DNA.put(name, new EntityInfo(name, origin, eggColor, spotColor)); } } @@ -265,10 +265,10 @@ public abstract class EntityRegistry { registerEggs(); - for(ItemMonsterPlacer item : ItemMonsterPlacer.SPAWNERS) { + for(ItemMobTemplate item : ItemMobTemplate.TEMPLATES) { item.delegateSetDisplay(); } - for(ItemNpcSpawner item : ItemNpcSpawner.SPAWNERS) { + for(ItemCharTemplate item : ItemCharTemplate.TEMPLATES) { item.delegateSetDisplay(); } } diff --git a/common/src/main/java/common/init/ItemRegistry.java b/common/src/main/java/common/init/ItemRegistry.java index 21c31a02..dc12f672 100755 --- a/common/src/main/java/common/init/ItemRegistry.java +++ b/common/src/main/java/common/init/ItemRegistry.java @@ -17,6 +17,8 @@ import common.collect.HashBiMap; import common.collect.Lists; import common.color.DyeColor; import common.color.TextColor; +import common.effect.Effect; +import common.effect.StatusEffect; import common.enchantment.Enchantment; import common.entity.item.EntityCart; import common.entity.npc.CharacterInfo; @@ -40,8 +42,8 @@ import common.item.material.ItemNugget; import common.item.material.ItemRecord; import common.item.spawner.ItemBoat; import common.item.spawner.ItemMinecart; -import common.item.spawner.ItemMonsterPlacer; -import common.item.spawner.ItemNpcSpawner; +import common.item.spawner.ItemMobTemplate; +import common.item.spawner.ItemCharTemplate; import common.item.tool.ItemAmmo; import common.item.tool.ItemAppleGold; import common.item.tool.ItemArmor; @@ -57,7 +59,7 @@ import common.item.tool.ItemCarrotOnAStick; import common.item.tool.ItemChargedOrb; import common.item.tool.ItemDie; import common.item.tool.ItemDynamite; -import common.item.tool.ItemEditWand; +import common.item.tool.ItemEditor; import common.item.tool.ItemEgg; import common.item.tool.ItemExpBottle; import common.item.tool.ItemExterminator; @@ -70,10 +72,10 @@ import common.item.tool.ItemFood; import common.item.tool.ItemGlassBottle; import common.item.tool.ItemHoe; import common.item.tool.ItemHorseArmor; -import common.item.tool.ItemInfoWand; +import common.item.tool.ItemScanner; import common.item.tool.ItemKey; import common.item.tool.ItemLead; -import common.item.tool.ItemLightning; +import common.item.tool.ItemTrident; import common.item.tool.ItemMagnet; import common.item.tool.ItemNameTag; import common.item.tool.ItemPickaxe; @@ -87,8 +89,6 @@ import common.item.tool.ItemSpaceNavigator; import common.item.tool.ItemSword; import common.item.tool.ItemWeatherToken; import common.log.Log; -import common.potion.Effect; -import common.potion.StatusEffect; import common.util.Pair; import common.util.Util; import common.world.Weather; @@ -194,21 +194,21 @@ public abstract class ItemRegistry { register("hopper_minecart", (new ItemMinecart(EntityCart.EnumMinecartType.HOPPER)).setDisplay("Trichterlore")); register("tnt_minecart", (new ItemMinecart(EntityCart.EnumMinecartType.TNT)).setDisplay("TNT-Lore") .setColor(TextColor.RED)); - for(EntityInfo egg : EntityRegistry.SPAWN_EGGS.values()) { - register(egg.id().toLowerCase() + "_spawner", (new ItemMonsterPlacer(egg.id())) + for(EntityInfo egg : EntityRegistry.DNA.values()) { + register("dna_sample_" + egg.id().toLowerCase(), (new ItemMobTemplate(egg.id())) .setMaxAmount(StackSize.L)); } for(SpeciesInfo species : SpeciesRegistry.SPECIMEN) { for(CharacterInfo charinfo : species.chars) { - if(charinfo.spawner) - register(charinfo.skin + "_spawner", (new ItemNpcSpawner(charinfo)) + if(charinfo.dna) + register("dna_sample_" + charinfo.skin, (new ItemCharTemplate(charinfo)) .setMaxAmount(StackSize.L)); } } - register("wand", (new ItemEditWand()).setDisplay("Bearbeitungswerkzeug")); - register("info_wand", (new ItemInfoWand()).setDisplay("Infowerkzeug")); - register("lightning_wand", (new ItemLightning()).setDisplay("Geladenes Zepter")); + register("editor", (new ItemEditor()).setDisplay("Bearbeitungswerkzeug")); + register("scanner", (new ItemScanner()).setDisplay("Infowerkzeug")); + register("trident", (new ItemTrident()).setDisplay("Geladenes Zepter")); register("banhammer", (new ItemBanHammer()).setDisplay("Hammer der Verbannung")); register("key", (new ItemKey()).setDisplay("Schlüssel").setTab(CheatTab.TOOLS).setMaxAmount(StackSize.L)); for(Pair sides : ItemDie.DIE_SIDES) { diff --git a/common/src/main/java/common/init/Items.java b/common/src/main/java/common/init/Items.java index 322a2b5c..cad40d17 100755 --- a/common/src/main/java/common/init/Items.java +++ b/common/src/main/java/common/init/Items.java @@ -39,8 +39,8 @@ import common.item.material.ItemNugget; import common.item.material.ItemRecord; import common.item.spawner.ItemBoat; import common.item.spawner.ItemMinecart; -import common.item.spawner.ItemMonsterPlacer; -import common.item.spawner.ItemNpcSpawner; +import common.item.spawner.ItemMobTemplate; +import common.item.spawner.ItemCharTemplate; import common.item.tool.ItemAmmo; import common.item.tool.ItemAppleGold; import common.item.tool.ItemArmor; @@ -55,7 +55,7 @@ import common.item.tool.ItemCarrotOnAStick; import common.item.tool.ItemChargedOrb; import common.item.tool.ItemDie; import common.item.tool.ItemDynamite; -import common.item.tool.ItemEditWand; +import common.item.tool.ItemEditor; import common.item.tool.ItemEgg; import common.item.tool.ItemExpBottle; import common.item.tool.ItemExterminator; @@ -68,10 +68,10 @@ import common.item.tool.ItemFood; import common.item.tool.ItemGlassBottle; import common.item.tool.ItemHoe; import common.item.tool.ItemHorseArmor; -import common.item.tool.ItemInfoWand; +import common.item.tool.ItemScanner; import common.item.tool.ItemKey; import common.item.tool.ItemLead; -import common.item.tool.ItemLightning; +import common.item.tool.ItemTrident; import common.item.tool.ItemMagnet; import common.item.tool.ItemNameTag; import common.item.tool.ItemPickaxe; @@ -88,8 +88,8 @@ import common.util.Util; public abstract class Items { - public static final ItemMonsterPlacer fox_spawner = get("fox_spawner"); - public static final ItemNpcSpawner highelf_spawner = get("highelf_spawner"); + public static final ItemMobTemplate dna_sample_fox = get("dna_sample_fox"); + public static final ItemCharTemplate dna_sample_highelf = get("dna_sample_highelf"); public static final ItemDoor acacia_door = get("acacia_door"); public static final ItemFence acacia_fence = get("acacia_fence"); public static final ItemBlock acacia_fence_gate = get("acacia_fence_gate"); @@ -438,7 +438,7 @@ public abstract class Items { public static final ItemBlock houstonia = get("houstonia"); public static final ItemBucket hydrogen_bucket = get("hydrogen_bucket"); public static final ItemBlock ice = get("ice"); - public static final ItemInfoWand info_wand = get("info_wand"); + public static final ItemScanner scanner = get("scanner"); public static final ItemDye ink_sack = get("ink_sack"); public static final ItemMetalBlock iodine_block = get("iodine_block"); public static final ItemMetalBlock iodine_ore = get("iodine_ore"); @@ -500,7 +500,7 @@ public abstract class Items { public static final ItemBlock light_blue_glass_pane = get("light_blue_glass_pane"); public static final ItemBlock light_blue_wool = get("light_blue_wool"); public static final ItemPressurePlate light_weighted_pressure_plate = get("light_weighted_pressure_plate"); - public static final ItemLightning lightning_wand = get("lightning_wand"); + public static final ItemTrident trident = get("trident"); public static final ItemBlock lime_carpet = get("lime_carpet"); public static final ItemBlock lime_clay = get("lime_clay"); public static final ItemDye lime_dye = get("lime_dye"); @@ -843,7 +843,7 @@ public abstract class Items { public static final ItemMetal vanadium_ingot = get("vanadium_ingot"); public static final ItemMetalBlock vanadium_ore = get("vanadium_ore"); public static final ItemColored vine = get("vine"); - public static final ItemEditWand wand = get("wand"); + public static final ItemEditor editor = get("editor"); public static final ItemBlock warp_chest = get("warp_chest"); public static final ItemBucket water_bucket = get("water_bucket"); public static final ItemLilyPad waterlily = get("waterlily"); @@ -1028,7 +1028,7 @@ public abstract class Items { } for(Iterator iter = items.iterator(); iter.hasNext();) { Item item = iter.next(); - if(item instanceof ItemNpcSpawner || item instanceof ItemMonsterPlacer) + if(item instanceof ItemCharTemplate || item instanceof ItemMobTemplate) iter.remove(); } if(!items.isEmpty()) { diff --git a/common/src/main/java/common/item/CheatTab.java b/common/src/main/java/common/item/CheatTab.java index 7d460bf7..a7b923ac 100755 --- a/common/src/main/java/common/item/CheatTab.java +++ b/common/src/main/java/common/item/CheatTab.java @@ -62,14 +62,14 @@ public enum CheatTab { return Items.minecart; } }, - SPAWNERS("Mob & Itemspawner", false) { + SPAWNERS("Mob-DNA-Proben", false) { protected Item getIconItem() { - return Items.fox_spawner; + return Items.dna_sample_fox; } }, - NPCS("Charakterspawner", false) { + NPCS("Charakter-DNA-Proben", false) { protected Item getIconItem() { - return Items.highelf_spawner; + return Items.dna_sample_highelf; } }, TOOLS("Werkzeug", false) { diff --git a/common/src/main/java/common/item/Item.java b/common/src/main/java/common/item/Item.java index ed237870..43454669 100755 --- a/common/src/main/java/common/item/Item.java +++ b/common/src/main/java/common/item/Item.java @@ -243,6 +243,10 @@ public class Item { return false; } + public boolean isAdminItem() { + return false; + } + public String getHotbarText(EntityNPC player, ItemStack stack) { return stack.getColoredName(); } diff --git a/common/src/main/java/common/item/spawner/ItemNpcSpawner.java b/common/src/main/java/common/item/spawner/ItemCharTemplate.java similarity index 75% rename from common/src/main/java/common/item/spawner/ItemNpcSpawner.java rename to common/src/main/java/common/item/spawner/ItemCharTemplate.java index 57db98c4..81021dc9 100755 --- a/common/src/main/java/common/item/spawner/ItemNpcSpawner.java +++ b/common/src/main/java/common/item/spawner/ItemCharTemplate.java @@ -20,32 +20,29 @@ import common.item.Item; import common.item.ItemStack; import common.model.Model; import common.model.ModelProvider; -import common.tileentity.TileEntity; import common.util.BlockPos; import common.util.ExtMath; import common.util.Facing; import common.util.HitPosition; -import common.util.Vec3; import common.world.State; import common.world.World; -public class ItemNpcSpawner extends Item +public class ItemCharTemplate extends Item { - public static final List SPAWNERS = Lists.newArrayList(); + public static final List TEMPLATES = Lists.newArrayList(); private final CharacterInfo spawned; - public ItemNpcSpawner(CharacterInfo spawned) + public ItemCharTemplate(CharacterInfo spawned) { -// this.setHasSubtypes(true); this.setTab(CheatTab.NPCS); this.spawned = spawned; this.setDisplay("delegate"); - SPAWNERS.add(this); + TEMPLATES.add(this); } public void delegateSetDisplay() { - this.setDisplay("Erschaffe " + this.getCharName()); + this.setDisplay("DNA-Probe von " + this.getCharName()); } public CharacterInfo getSpawnedChar() { @@ -77,7 +74,7 @@ public class ItemNpcSpawner extends Item { return true; } - else if (!playerIn.canPlayerEdit(pos.offset(side), side, stack)) + else if (!playerIn.connection.isAdmin() || !playerIn.canPlayerEdit(pos.offset(side), side, stack)) { return false; } @@ -106,7 +103,6 @@ public class ItemNpcSpawner extends Item // if (!playerIn.creative) // { - stack.decrSize(); // } } // } @@ -140,7 +136,7 @@ public class ItemNpcSpawner extends Item return itemStackIn; } - if (!playerIn.canPlayerEdit(blockpos, movingobjectposition.side, itemStackIn)) + if (!playerIn.connection.isAdmin() || !playerIn.canPlayerEdit(blockpos, movingobjectposition.side, itemStackIn)) { return itemStackIn; } @@ -160,7 +156,6 @@ public class ItemNpcSpawner extends Item // if (!playerIn.creative) // { - itemStackIn.decrSize(); // } // if(z == 0) @@ -193,42 +188,8 @@ public class ItemNpcSpawner extends Item worldIn.spawnEntityInWorld(entity); return entity; } - -// public void getSubItems(Item itemIn, CreativeTab tab, List subItems) -// { -// for (int z = 0; z < SpeciesRegistry.CHARACTERS.size(); z++) -// { -// subItems.add(new ItemStack(itemIn, 1, z)); -// } -// } -// -// public ItemMeshDefinition getMesher() { -// return new ItemMeshDefinition() -// { -// public String getModelLocation(ItemStack stack) -// { -// return "item/npc_spawner#0" + '#' + "inventory"; -// } -// }; -// } -// -// public void getRenderItems(Item itemIn, List subItems) { -// subItems.add(new ItemStack(itemIn, 1, 0)); -// } public Model getModel(ModelProvider provider, String name) { - return provider.getModel(this.getTransform(), "npc_spawner", "npc_spawner_overlay"); - } - - public ItemStack dispenseStack(World world, TileEntity source, Vec3 position, BlockPos blockpos, Facing facing, ItemStack stack) - { - double d0 = blockpos.getX() + 0.5 + (double)facing.getFrontOffsetX(); - double d1 = blockpos.getY() + 0.2; - double d2 = blockpos.getZ() + 0.5 + (double)facing.getFrontOffsetZ(); - Entity entity = spawnNpc(world, this.spawned, d0, d1, d2, false); - if (entity instanceof EntityLiving && stack.hasDisplayName()) - ((EntityLiving)entity).setCustomNameTag(stack.getDisplayName()); - stack.split(1); - return stack; + return provider.getModel(this.getTransform(), "dna_sample_char", "dna_sample_char_overlay"); } } diff --git a/common/src/main/java/common/item/spawner/ItemMonsterPlacer.java b/common/src/main/java/common/item/spawner/ItemMobTemplate.java similarity index 72% rename from common/src/main/java/common/item/spawner/ItemMonsterPlacer.java rename to common/src/main/java/common/item/spawner/ItemMobTemplate.java index 2fb56f75..e3b054cd 100755 --- a/common/src/main/java/common/item/spawner/ItemMonsterPlacer.java +++ b/common/src/main/java/common/item/spawner/ItemMobTemplate.java @@ -18,32 +18,29 @@ import common.item.Item; import common.item.ItemStack; import common.model.Model; import common.model.ModelProvider; -import common.tileentity.TileEntity; import common.util.BlockPos; import common.util.ExtMath; import common.util.Facing; import common.util.HitPosition; -import common.util.Vec3; import common.world.State; import common.world.World; -public class ItemMonsterPlacer extends Item +public class ItemMobTemplate extends Item { - public static final List SPAWNERS = Lists.newArrayList(); + public static final List TEMPLATES = Lists.newArrayList(); private final String entityId; - public ItemMonsterPlacer(String entityId) + public ItemMobTemplate(String entityId) { -// this.setHasSubtypes(true); this.setTab(CheatTab.SPAWNERS); this.entityId = entityId; this.setDisplay("delegate"); - SPAWNERS.add(this); + TEMPLATES.add(this); } public void delegateSetDisplay() { - this.setDisplay("Erschaffe " + EntityRegistry.getEntityName(this.entityId)); + this.setDisplay("DNA-Probe von " + EntityRegistry.getEntityName(this.entityId)); } public String getSpawnedId() { @@ -52,12 +49,12 @@ public class ItemMonsterPlacer extends Item public int getColorFromItemStack(ItemStack stack, int renderPass) { - EntityInfo egg = EntityRegistry.SPAWN_EGGS.get(this.entityId); + EntityInfo egg = EntityRegistry.DNA.get(this.entityId); return egg != null ? (renderPass == 0 ? egg.color1() : egg.color2()) : 16777215; } public void addInformation(ItemStack stack, EntityNPC player, List tooltip) { - EntityInfo egg = EntityRegistry.SPAWN_EGGS.get(this.entityId); + EntityInfo egg = EntityRegistry.DNA.get(this.entityId); if(egg != null) { Dimension dim = egg.origin() == null ? null : UniverseRegistry.getDimension(egg.origin()); tooltip.add(TextColor.ORANGE + "Herkunft: " + (dim == null ? "???" : dim.getFormattedName(false))); @@ -73,7 +70,7 @@ public class ItemMonsterPlacer extends Item { return true; } - else if (!playerIn.canPlayerEdit(pos.offset(side), side, stack)) + else if (!playerIn.connection.isAdmin() || !playerIn.canPlayerEdit(pos.offset(side), side, stack)) { return false; } @@ -108,7 +105,6 @@ public class ItemMonsterPlacer extends Item // if (!playerIn.creative) // { - stack.decrSize(); // } } // } @@ -145,7 +141,7 @@ public class ItemMonsterPlacer extends Item return itemStackIn; } - if (!playerIn.canPlayerEdit(blockpos, movingobjectposition.side, itemStackIn)) + if (!playerIn.connection.isAdmin() || !playerIn.canPlayerEdit(blockpos, movingobjectposition.side, itemStackIn)) { return itemStackIn; } @@ -170,7 +166,6 @@ public class ItemMonsterPlacer extends Item // if (!playerIn.creative) // { - itemStackIn.decrSize(); // } // if(z == 0) @@ -186,7 +181,7 @@ public class ItemMonsterPlacer extends Item } public static EntityLiving spawnCreature(World worldIn, String entityID, double x, double y, double z, boolean check) { - if (!EntityRegistry.SPAWN_EGGS.containsKey(entityID)) + if (!EntityRegistry.DNA.containsKey(entityID)) return null; Entity entity = EntityRegistry.createEntityByName(entityID, worldIn); if(!(entity instanceof EntityLiving living)) @@ -202,44 +197,7 @@ public class ItemMonsterPlacer extends Item return living; } -// /** -// * returns a list of items with the same ID, but different meta (eg: dye returns 16 items) -// */ -// public void getSubItems(Item itemIn, CreativeTab tab, List subItems) -// { -// for (EntityEggInfo entitylist$entityegginfo : EntityRegistry.SPAWN_EGGS.values()) -// { -// subItems.add(new ItemStack(itemIn, 1, entitylist$entityegginfo.spawnedID)); -// } -// } - -// public ItemMeshDefinition getMesher() { -// return new ItemMeshDefinition() -// { -// public String getModelLocation(ItemStack stack) -// { -// return "item/spawn_egg#0" + '#' + "inventory"; -// } -// }; -// } - -// public void getRenderItems(Item itemIn, List subItems) { -// subItems.add(new ItemStack(itemIn, 1, 0)); -// } - public Model getModel(ModelProvider provider, String name) { - return provider.getModel(this.getTransform(), "spawn_egg", "spawn_egg_overlay"); - } - - public ItemStack dispenseStack(World world, TileEntity source, Vec3 position, BlockPos blockpos, Facing facing, ItemStack stack) - { - double d0 = blockpos.getX() + 0.5 + (double)facing.getFrontOffsetX(); - double d1 = blockpos.getY() + 0.2; - double d2 = blockpos.getZ() + 0.5 + (double)facing.getFrontOffsetZ(); - Entity entity = spawnCreature(world, this.entityId, d0, d1, d2, false); - if (entity instanceof EntityLiving && stack.hasDisplayName()) - ((EntityLiving)entity).setCustomNameTag(stack.getDisplayName()); - stack.split(1); - return stack; + return provider.getModel(this.getTransform(), "dna_sample", "dna_sample_overlay"); } } diff --git a/common/src/main/java/common/item/tool/ItemAppleGold.java b/common/src/main/java/common/item/tool/ItemAppleGold.java index a7e01695..1c463c60 100755 --- a/common/src/main/java/common/item/tool/ItemAppleGold.java +++ b/common/src/main/java/common/item/tool/ItemAppleGold.java @@ -1,10 +1,10 @@ package common.item.tool; import common.color.TextColor; +import common.effect.Effect; +import common.effect.StatusEffect; import common.entity.npc.EntityNPC; import common.item.ItemStack; -import common.potion.Effect; -import common.potion.StatusEffect; import common.world.World; public class ItemAppleGold extends ItemFood diff --git a/common/src/main/java/common/item/tool/ItemEditWand.java b/common/src/main/java/common/item/tool/ItemEditor.java similarity index 70% rename from common/src/main/java/common/item/tool/ItemEditWand.java rename to common/src/main/java/common/item/tool/ItemEditor.java index 8b1524eb..81393c2e 100755 --- a/common/src/main/java/common/item/tool/ItemEditWand.java +++ b/common/src/main/java/common/item/tool/ItemEditor.java @@ -9,29 +9,16 @@ import common.model.Transforms; import common.util.BlockPos; import common.world.World; -public class ItemEditWand extends Item { - public ItemEditWand() { +public class ItemEditor extends Item { + public ItemEditor() { this.setUnstackable(); this.setTab(CheatTab.TOOLS); } - -// public boolean canBreakBlocks() { -// return false; -// } -// -// public boolean ignoresBlocks() { -// return true; -// } public boolean hasEffect(ItemStack stack) { return true; } -// public boolean onItemUse(ItemStack stack, EntityNPC playerIn, World worldIn, BlockPos pos, Facing side, float hitX, float hitY, float hitZ) -// { -// return true; -// } - public boolean onAction(ItemStack stack, EntityNPC player, World world, ItemControl control, BlockPos block) { if(!world.client && control == ItemControl.TERTIARY && player.connection.isAdmin()) player.connection.setSelectMode(); @@ -43,4 +30,8 @@ public class ItemEditWand extends Item { public Transforms getTransform() { return Transforms.TOOL; } + + public boolean isAdminItem() { + return true; + } } diff --git a/common/src/main/java/common/item/tool/ItemExterminator.java b/common/src/main/java/common/item/tool/ItemExterminator.java index 8b6beabf..06db382d 100755 --- a/common/src/main/java/common/item/tool/ItemExterminator.java +++ b/common/src/main/java/common/item/tool/ItemExterminator.java @@ -17,12 +17,8 @@ public class ItemExterminator extends ItemMagnetic { this.setTab(CheatTab.WEAPONS); } -// public final boolean canUseInAir() { -// return true; -// } - public ItemStack onItemRightClick(ItemStack stack, World world, EntityNPC player) { - if(!world.client) { + if(!world.client && player.connection.isAdmin()) { world.playSoundAtEntity(player, SoundEvent.CLICK, 1.0F); if(world.dimension == Space.INSTANCE) player.connection.addHotbar(TextColor.RED + "Der Weltraum kann nicht zerstört werden (lol)"); @@ -42,4 +38,8 @@ public class ItemExterminator extends ItemMagnetic { // player.triggerAchievement(StatRegistry.objectUseStats[ItemRegistry.getIdFromItem(this)]); return stack; } + + public boolean isAdminItem() { + return true; + } } diff --git a/common/src/main/java/common/item/tool/ItemFishFood.java b/common/src/main/java/common/item/tool/ItemFishFood.java index 1714a38f..f739935a 100755 --- a/common/src/main/java/common/item/tool/ItemFishFood.java +++ b/common/src/main/java/common/item/tool/ItemFishFood.java @@ -1,11 +1,11 @@ package common.item.tool; +import common.effect.Effect; +import common.effect.StatusEffect; import common.entity.npc.EntityNPC; import common.item.ItemStack; import common.model.Model; import common.model.ModelProvider; -import common.potion.Effect; -import common.potion.StatusEffect; import common.world.World; public class ItemFishFood extends ItemFood diff --git a/common/src/main/java/common/item/tool/ItemFood.java b/common/src/main/java/common/item/tool/ItemFood.java index c012027f..3010cd71 100755 --- a/common/src/main/java/common/item/tool/ItemFood.java +++ b/common/src/main/java/common/item/tool/ItemFood.java @@ -1,13 +1,13 @@ package common.item.tool; +import common.effect.Effect; +import common.effect.StatusEffect; import common.entity.npc.EntityNPC; import common.init.SoundEvent; import common.item.CheatTab; import common.item.Item; import common.item.ItemAction; import common.item.ItemStack; -import common.potion.Effect; -import common.potion.StatusEffect; import common.world.World; public class ItemFood extends Item diff --git a/common/src/main/java/common/item/tool/ItemPotion.java b/common/src/main/java/common/item/tool/ItemPotion.java index f6d00643..843e4b13 100755 --- a/common/src/main/java/common/item/tool/ItemPotion.java +++ b/common/src/main/java/common/item/tool/ItemPotion.java @@ -4,6 +4,8 @@ import java.util.Collection; import java.util.List; import common.collect.Lists; import common.color.TextColor; +import common.effect.Effect; +import common.effect.StatusEffect; import common.entity.npc.EntityNPC; import common.entity.projectile.EntityPotion; import common.init.ItemRegistry; @@ -17,8 +19,6 @@ import common.item.ItemStack; import common.item.StackSize; import common.model.Model; import common.model.ModelProvider; -import common.potion.Effect; -import common.potion.StatusEffect; import common.tileentity.TileEntity; import common.util.BlockPos; import common.util.Facing; diff --git a/common/src/main/java/common/item/tool/ItemInfoWand.java b/common/src/main/java/common/item/tool/ItemScanner.java similarity index 91% rename from common/src/main/java/common/item/tool/ItemInfoWand.java rename to common/src/main/java/common/item/tool/ItemScanner.java index 00e659c5..594b948a 100755 --- a/common/src/main/java/common/item/tool/ItemInfoWand.java +++ b/common/src/main/java/common/item/tool/ItemScanner.java @@ -8,8 +8,8 @@ import common.util.BlockPos; import common.util.Vec3; import common.world.AWorldServer; -public class ItemInfoWand extends ItemWand { - public ItemInfoWand() { +public class ItemScanner extends ItemWand { + public ItemScanner() { this.setColor(TextColor.BLUE); } diff --git a/common/src/main/java/common/item/tool/ItemLightning.java b/common/src/main/java/common/item/tool/ItemTrident.java similarity index 90% rename from common/src/main/java/common/item/tool/ItemLightning.java rename to common/src/main/java/common/item/tool/ItemTrident.java index bfc6e3c4..894d1eb8 100755 --- a/common/src/main/java/common/item/tool/ItemLightning.java +++ b/common/src/main/java/common/item/tool/ItemTrident.java @@ -7,8 +7,8 @@ import common.item.ItemStack; import common.util.Vec3; import common.world.AWorldServer; -public class ItemLightning extends ItemWand { - public ItemLightning() { +public class ItemTrident extends ItemWand { + public ItemTrident() { this.setColor(TextColor.NEON); this.setTab(CheatTab.WEAPONS); } diff --git a/common/src/main/java/common/network/IPlayer.java b/common/src/main/java/common/network/IPlayer.java index ed86f9fa..d191f0c9 100644 --- a/common/src/main/java/common/network/IPlayer.java +++ b/common/src/main/java/common/network/IPlayer.java @@ -3,6 +3,7 @@ package common.network; import java.util.List; import common.dimension.Dimension; +import common.effect.StatusEffect; import common.entity.Entity; import common.entity.npc.EntityNPC; import common.entity.types.EntityLiving; @@ -23,7 +24,6 @@ import common.packet.CPacketPlace; import common.packet.CPacketPlayer; import common.packet.CPacketSign; import common.packet.CPacketSkin; -import common.potion.StatusEffect; import common.tileentity.IInteractionObject; import common.tileentity.TileEntitySign; import common.util.BlockPos; diff --git a/common/src/main/java/common/packet/SPacketEntityEffect.java b/common/src/main/java/common/packet/SPacketEntityEffect.java index 36c9f46b..3ea763f0 100755 --- a/common/src/main/java/common/packet/SPacketEntityEffect.java +++ b/common/src/main/java/common/packet/SPacketEntityEffect.java @@ -2,11 +2,11 @@ package common.packet; import java.io.IOException; +import common.effect.Effect; +import common.effect.StatusEffect; import common.network.IClientPlayer; import common.network.Packet; import common.network.PacketBuffer; -import common.potion.Effect; -import common.potion.StatusEffect; public class SPacketEntityEffect implements Packet { diff --git a/common/src/main/java/common/packet/SPacketRemoveEntityEffect.java b/common/src/main/java/common/packet/SPacketRemoveEntityEffect.java index b8c70b77..c327fa03 100755 --- a/common/src/main/java/common/packet/SPacketRemoveEntityEffect.java +++ b/common/src/main/java/common/packet/SPacketRemoveEntityEffect.java @@ -2,11 +2,11 @@ package common.packet; import java.io.IOException; +import common.effect.Effect; +import common.effect.StatusEffect; import common.network.IClientPlayer; import common.network.Packet; import common.network.PacketBuffer; -import common.potion.Effect; -import common.potion.StatusEffect; public class SPacketRemoveEntityEffect implements Packet { diff --git a/common/src/main/java/common/tileentity/TileEntityBeacon.java b/common/src/main/java/common/tileentity/TileEntityBeacon.java index b3a96a83..a117f97c 100755 --- a/common/src/main/java/common/tileentity/TileEntityBeacon.java +++ b/common/src/main/java/common/tileentity/TileEntityBeacon.java @@ -5,10 +5,10 @@ import java.util.List; import common.block.Block; import common.block.artificial.BlockStainedGlass; import common.block.artificial.BlockStainedGlassPane; +import common.effect.Effect; +import common.effect.StatusEffect; import common.entity.types.EntityLiving; import common.init.Blocks; -import common.potion.Effect; -import common.potion.StatusEffect; import common.tags.TagObject; import common.util.BlockPos; import common.util.BoundingBox; diff --git a/common/src/main/java/common/tileentity/TileEntityBrewingStand.java b/common/src/main/java/common/tileentity/TileEntityBrewingStand.java index 760ab3d4..8dbce52e 100755 --- a/common/src/main/java/common/tileentity/TileEntityBrewingStand.java +++ b/common/src/main/java/common/tileentity/TileEntityBrewingStand.java @@ -5,6 +5,7 @@ import java.util.List; import common.block.tech.BlockBrewingStand; import common.collect.Lists; +import common.effect.StatusEffect; import common.entity.npc.EntityNPC; import common.init.BrewingRegistry; import common.init.Items; @@ -15,7 +16,6 @@ import common.inventory.InventoryPlayer; import common.item.Item; import common.item.ItemStack; import common.item.tool.ItemPotion; -import common.potion.StatusEffect; import common.tags.TagObject; import common.util.Facing; import common.world.State; diff --git a/common/src/main/java/common/tileentity/TileEntityMobSpawner.java b/common/src/main/java/common/tileentity/TileEntityMobSpawner.java index 213789af..4440b5b2 100755 --- a/common/src/main/java/common/tileentity/TileEntityMobSpawner.java +++ b/common/src/main/java/common/tileentity/TileEntityMobSpawner.java @@ -4,8 +4,8 @@ import common.entity.types.EntityLiving; import common.init.EntityRegistry; import common.inventory.ContainerTile; import common.item.ItemStack; -import common.item.spawner.ItemMonsterPlacer; -import common.item.spawner.ItemNpcSpawner; +import common.item.spawner.ItemMobTemplate; +import common.item.spawner.ItemCharTemplate; import common.tags.TagObject; import common.vars.Vars; @@ -21,7 +21,7 @@ public class TileEntityMobSpawner extends TileEntityDevice implements ITickable private int spawnRange = 4; public boolean isItemValidForSlot(int index, ItemStack stack) { - return index == 0 ? stack.getItem() instanceof ItemMonsterPlacer || stack.getItem() instanceof ItemNpcSpawner : false; + return index == 0 ? stack.getItem() instanceof ItemMobTemplate || stack.getItem() instanceof ItemCharTemplate : false; } public String getName() { @@ -35,8 +35,8 @@ public class TileEntityMobSpawner extends TileEntityDevice implements ITickable public String formatDisplay(ContainerTile inv) { ItemStack stack = inv.getSlot(0).getStack(); if(stack == null) - return "Kein Spawner vorhanden"; - return String.format("Erschaffe: %s", stack.getItem() instanceof ItemMonsterPlacer egg ? EntityRegistry.getEntityName(egg.getSpawnedId()) : ((stack.getItem() instanceof ItemNpcSpawner egg ? egg.getCharName() : ""))); + return "Keine DNA-Probe vorhanden"; + return String.format("Erschaffe: %s", stack.getItem() instanceof ItemMobTemplate egg ? EntityRegistry.getEntityName(egg.getSpawnedId()) : ((stack.getItem() instanceof ItemCharTemplate egg ? egg.getCharName() : ""))); } protected boolean executeFunction() { @@ -55,10 +55,10 @@ public class TileEntityMobSpawner extends TileEntityDevice implements ITickable double y = (double)(this.pos.getY() + this.worldObj.rand.zrange(3) - 1); double z = (double)this.pos.getZ() + (this.worldObj.rand.doublev() - this.worldObj.rand.doublev()) * (double)this.spawnRange + 0.5D; EntityLiving entity = null; - if(stack.getItem() instanceof ItemMonsterPlacer egg) - entity = ItemMonsterPlacer.spawnCreature(this.worldObj, egg.getSpawnedId(), x, y, z, true); - else if(stack.getItem() instanceof ItemNpcSpawner egg) - entity = ItemNpcSpawner.spawnNpc(this.worldObj, egg.getSpawnedChar(), x, y, z, true); + if(stack.getItem() instanceof ItemMobTemplate egg) + entity = ItemMobTemplate.spawnCreature(this.worldObj, egg.getSpawnedId(), x, y, z, true); + else if(stack.getItem() instanceof ItemCharTemplate egg) + entity = ItemCharTemplate.spawnNpc(this.worldObj, egg.getSpawnedChar(), x, y, z, true); if (entity == null) return true; this.decrStackSize(0, 1); diff --git a/server/src/main/java/server/Server.java b/server/src/main/java/server/Server.java index 16e31b11..de6efe05 100755 --- a/server/src/main/java/server/Server.java +++ b/server/src/main/java/server/Server.java @@ -33,6 +33,7 @@ import common.collect.Maps; import common.color.TextColor; import common.dimension.Dimension; import common.dimension.Space; +import common.effect.StatusEffect; import common.entity.Entity; import common.entity.npc.EntityHuman; import common.entity.npc.EntityNPC; @@ -80,7 +81,6 @@ import common.packet.SPacketSetExperience; import common.packet.SPacketSkin; import common.packet.SPacketTimeUpdate; import common.packet.SPacketWorld; -import common.potion.StatusEffect; import common.tags.TagObject; import common.util.BlockPos; import common.util.EncryptUtil; diff --git a/server/src/main/java/server/command/commands/CommandGod.java b/server/src/main/java/server/command/commands/CommandGod.java index b1aaff63..8945d877 100644 --- a/server/src/main/java/server/command/commands/CommandGod.java +++ b/server/src/main/java/server/command/commands/CommandGod.java @@ -3,8 +3,8 @@ package server.command.commands; import java.util.List; import common.color.TextColor; +import common.effect.Effect; import common.entity.npc.EntityNPC; -import common.potion.Effect; import server.command.Command; import server.command.CommandEnvironment; import server.command.Executor; diff --git a/server/src/main/java/server/command/commands/CommandMilk.java b/server/src/main/java/server/command/commands/CommandMilk.java index aa270347..ef3dba27 100644 --- a/server/src/main/java/server/command/commands/CommandMilk.java +++ b/server/src/main/java/server/command/commands/CommandMilk.java @@ -3,8 +3,8 @@ package server.command.commands; import java.util.List; import common.collect.Lists; +import common.effect.Effect; import common.entity.types.EntityLiving; -import common.potion.Effect; import server.command.Command; import server.command.CommandEnvironment; import server.command.Executor; diff --git a/server/src/main/java/server/command/commands/CommandPotion.java b/server/src/main/java/server/command/commands/CommandPotion.java index 290dbc2f..9f81b032 100644 --- a/server/src/main/java/server/command/commands/CommandPotion.java +++ b/server/src/main/java/server/command/commands/CommandPotion.java @@ -2,9 +2,9 @@ package server.command.commands; import java.util.List; +import common.effect.Effect; +import common.effect.StatusEffect; import common.entity.types.EntityLiving; -import common.potion.Effect; -import common.potion.StatusEffect; import server.command.Command; import server.command.CommandEnvironment; import server.command.Executor; diff --git a/server/src/main/java/server/network/Player.java b/server/src/main/java/server/network/Player.java index 2a93a900..112b1a0f 100755 --- a/server/src/main/java/server/network/Player.java +++ b/server/src/main/java/server/network/Player.java @@ -14,6 +14,8 @@ import common.block.artificial.BlockWall; import common.collect.Lists; import common.color.TextColor; import common.dimension.Dimension; +import common.effect.Effect; +import common.effect.StatusEffect; import common.entity.Entity; import common.entity.animal.EntityHorse; import common.entity.item.EntityItem; @@ -97,8 +99,6 @@ import common.packet.SPacketTrades; import common.packet.SPacketUpdateHealth; import common.packet.CPacketAction.Action; import common.packet.SPacketMessage.Type; -import common.potion.Effect; -import common.potion.StatusEffect; import common.tags.TagObject; import common.tileentity.IInteractionObject; import common.tileentity.ILockableContainer;