From 27fec47545ed6a00d7fbd4666233d600b7eafbfb Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Mon, 9 Nov 2020 16:27:30 +0300 Subject: [PATCH] New items --- .../entities/InfusionPedestalEntity.java | 1 - .../ru/betterend/entity/EntityEndFish.java | 4 +- .../mixin/common/IngredientMixin.java | 1 - .../recipe/builders/InfusionRecipe.java | 1 - .../java/ru/betterend/registry/EndItems.java | 6 ++ .../ru/betterend/rituals/InfusionRitual.java | 1 - .../world/features/bushes/BushFeature.java | 81 ++++++++++++++++++ .../textures/item/bucket_end_fish.png | Bin 0 -> 2194 bytes .../betterend/textures/item/end_fish.png | Bin 0 -> 2185 bytes 9 files changed, 89 insertions(+), 6 deletions(-) create mode 100644 src/main/java/ru/betterend/world/features/bushes/BushFeature.java create mode 100644 src/main/resources/assets/betterend/textures/item/bucket_end_fish.png create mode 100644 src/main/resources/assets/betterend/textures/item/end_fish.png diff --git a/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java b/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java index 0c42dc75..5c03a43a 100644 --- a/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java +++ b/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java @@ -4,7 +4,6 @@ import net.minecraft.block.BlockState; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; - import ru.betterend.rituals.InfusionRitual; public class InfusionPedestalEntity extends PedestalBlockEntity { diff --git a/src/main/java/ru/betterend/entity/EntityEndFish.java b/src/main/java/ru/betterend/entity/EntityEndFish.java index 1b584a94..736943ae 100644 --- a/src/main/java/ru/betterend/entity/EntityEndFish.java +++ b/src/main/java/ru/betterend/entity/EntityEndFish.java @@ -15,7 +15,6 @@ import net.minecraft.entity.data.TrackedData; import net.minecraft.entity.data.TrackedDataHandlerRegistry; import net.minecraft.entity.passive.SchoolingFishEntity; import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.nbt.CompoundTag; import net.minecraft.particle.ParticleTypes; import net.minecraft.sound.SoundEvent; @@ -24,6 +23,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Box; import net.minecraft.world.ServerWorldAccess; import net.minecraft.world.World; +import ru.betterend.registry.EndItems; public class EntityEndFish extends SchoolingFishEntity { public static final int VARIANTS = 5; @@ -61,7 +61,7 @@ public class EntityEndFish extends SchoolingFishEntity { @Override protected ItemStack getFishBucketItem() { - return new ItemStack(Items.WATER_BUCKET); + return new ItemStack(EndItems.BUCKET_END_FISH); } @Override diff --git a/src/main/java/ru/betterend/mixin/common/IngredientMixin.java b/src/main/java/ru/betterend/mixin/common/IngredientMixin.java index 5144e268..241f814c 100644 --- a/src/main/java/ru/betterend/mixin/common/IngredientMixin.java +++ b/src/main/java/ru/betterend/mixin/common/IngredientMixin.java @@ -8,7 +8,6 @@ import org.spongepowered.asm.mixin.Shadow; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; import net.minecraft.recipe.Ingredient; - import ru.betterend.interfaces.CompoundSerializer; @Mixin(Ingredient.class) diff --git a/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java b/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java index 0bccf0eb..ed4a2b7e 100644 --- a/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java +++ b/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java @@ -17,7 +17,6 @@ import net.minecraft.util.Identifier; import net.minecraft.util.JsonHelper; import net.minecraft.util.registry.Registry; import net.minecraft.world.World; - import ru.betterend.BetterEnd; import ru.betterend.interfaces.CompoundSerializer; import ru.betterend.recipe.EndRecipeManager; diff --git a/src/main/java/ru/betterend/registry/EndItems.java b/src/main/java/ru/betterend/registry/EndItems.java index 99337710..243afea3 100644 --- a/src/main/java/ru/betterend/registry/EndItems.java +++ b/src/main/java/ru/betterend/registry/EndItems.java @@ -10,9 +10,12 @@ import net.minecraft.block.dispenser.ItemDispenserBehavior; import net.minecraft.entity.EntityType; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.SpawnReason; +import net.minecraft.fluid.Fluids; import net.minecraft.item.ArmorItem; import net.minecraft.item.BlockItem; +import net.minecraft.item.FishBucketItem; import net.minecraft.item.FoodComponent; +import net.minecraft.item.FoodComponents; import net.minecraft.item.Item; import net.minecraft.item.Item.Settings; import net.minecraft.item.ItemStack; @@ -81,6 +84,9 @@ public class EndItems { // Food // public final static Item SHADOW_BERRY_RAW = registerFood("shadow_berry_raw", 4, 0.5F); public final static Item SHADOW_BERRY_COOKED = registerFood("shadow_berry_cooked", 6, 0.7F); + public final static Item END_FISH_RAW = registerFood("end_fish_raw", FoodComponents.SALMON); + public final static Item END_FISH_COOKED = registerFood("end_fish_cooked", FoodComponents.COOKED_SALMON); + public final static Item BUCKET_END_FISH = registerItem("bucket_end_fish", new FishBucketItem(EndEntities.END_FISH, Fluids.WATER, makeSettings())); // Other // public static final Item ETERNAL_CRYSTAL = registerItem("eternal_crystal", new EternalCrystal()); diff --git a/src/main/java/ru/betterend/rituals/InfusionRitual.java b/src/main/java/ru/betterend/rituals/InfusionRitual.java index 6a1eb157..0daa50e5 100644 --- a/src/main/java/ru/betterend/rituals/InfusionRitual.java +++ b/src/main/java/ru/betterend/rituals/InfusionRitual.java @@ -10,7 +10,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; - import ru.betterend.blocks.entities.InfusionPedestalEntity; import ru.betterend.blocks.entities.PedestalBlockEntity; import ru.betterend.recipe.builders.InfusionRecipe; diff --git a/src/main/java/ru/betterend/world/features/bushes/BushFeature.java b/src/main/java/ru/betterend/world/features/bushes/BushFeature.java new file mode 100644 index 00000000..2e17a8f7 --- /dev/null +++ b/src/main/java/ru/betterend/world/features/bushes/BushFeature.java @@ -0,0 +1,81 @@ +package ru.betterend.world.features.bushes; + +import java.util.Random; +import java.util.function.Function; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.LeavesBlock; +import net.minecraft.block.Material; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.StructureWorldAccess; +import net.minecraft.world.gen.chunk.ChunkGenerator; +import net.minecraft.world.gen.feature.DefaultFeatureConfig; +import ru.betterend.noise.OpenSimplexNoise; +import ru.betterend.registry.EndTags; +import ru.betterend.util.BlocksHelper; +import ru.betterend.util.MHelper; +import ru.betterend.util.sdf.SDF; +import ru.betterend.util.sdf.operator.SDFDisplacement; +import ru.betterend.util.sdf.operator.SDFScale3D; +import ru.betterend.util.sdf.operator.SDFSubtraction; +import ru.betterend.util.sdf.operator.SDFTranslate; +import ru.betterend.util.sdf.primitive.SDFSphere; +import ru.betterend.world.features.DefaultFeature; + +public class BushFeature extends DefaultFeature { + private static final Function REPLACE; + private final Block leaves; + private final Block stem; + + public BushFeature(Block leaves, Block stem) { + this.leaves = leaves; + this.stem = stem; + } + + @Override + public boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos, DefaultFeatureConfig config) { + if (!world.getBlockState(pos.down()).getBlock().isIn(EndTags.END_GROUND)) return false; + + float radius = MHelper.randRange(1.8F, 3.5F, random); + OpenSimplexNoise noise = new OpenSimplexNoise(random.nextInt()); + SDF sphere = new SDFSphere().setRadius(radius).setBlock(this.leaves); + sphere = new SDFScale3D().setScale(1, 0.5F, 1).setSource(sphere); + sphere = new SDFDisplacement().setFunction((vec) -> { return (float) noise.eval(vec.getX() * 0.2, vec.getY() * 0.2, vec.getZ() * 0.2) * 3; }).setSource(sphere); + sphere = new SDFDisplacement().setFunction((vec) -> { return MHelper.randRange(-2F, 2F, random); }).setSource(sphere); + sphere = new SDFSubtraction().setSourceA(sphere).setSourceB(new SDFTranslate().setTranslate(0, -radius, 0).setSource(sphere)); + sphere.setReplaceFunction(REPLACE); + sphere.setPostProcess((info) -> { + if (info.getState().getBlock() instanceof LeavesBlock) { + int distance = info.getPos().getManhattanDistance(pos); + if (distance < 7) { + return info.getState().with(LeavesBlock.DISTANCE, distance); + } + else { + return AIR; + } + } + return info.getState(); + }); + sphere.fillRecursive(world, pos); + BlocksHelper.setWithoutUpdate(world, pos, stem); + for (Direction d: Direction.values()) { + BlockPos p = pos.offset(d); + if (world.isAir(p)) { + BlocksHelper.setWithoutUpdate(world, p, leaves.getDefaultState().with(LeavesBlock.DISTANCE, 1)); + } + } + + return true; + } + + static { + REPLACE = (state) -> { + if (state.getMaterial().equals(Material.PLANT)) { + return true; + } + return state.getMaterial().isReplaceable(); + }; + } +} diff --git a/src/main/resources/assets/betterend/textures/item/bucket_end_fish.png b/src/main/resources/assets/betterend/textures/item/bucket_end_fish.png new file mode 100644 index 0000000000000000000000000000000000000000..63985c6860bdd91a9c28ecb7bc8afa4689e28acb GIT binary patch literal 2194 zcmbVOe{2&~96#tNKej~@5a=*?yTvdE*Za|*cdVOR3vP*JWScNaSoZGjwL91L&fab9 zP;{UyGeE$^KimXSG!YZBj2IUKix#$p5Q&RX2!RmDh=OF%!6p$MoA27L3^S0}^zPo> zectE$`TlzE-rcnE#oR@Ci!cn!t*r1>qw8YhSYSryXUC=hx-3*HUePctdx>$(!MYBv zz%a8S*VgHE{+D=B30r}r2+$f2s|bx@#iel-h)qz(1sIeg9^&_t-x9bid5A3zKkZk& zuu-nq9)&gAH`a>Vn?z0`N=xwKIFAUzPzQKC9Exas+(RUJc{Da2Qv{xb=uIA?%rJ=8 z`8VNSB?@te)k%tsoyA?8m2uJ>YhR1AG~=RZ7sc2}n&D|DZ{zUvk3iOre zhLJj3Qib2oS4K1)L_}EW^AN~wt1L@AvigY$Vs1pQ>|75fR4&tH5bz-EQb2?X<*_wA=0?IZhHuC&xgEg(7g<;WS%SR7R}^ zLNi$nRT5&fOB`U_ZYL>7c0k%hbm9U~AUU^Fa0qSzKs##`^aIP&EM>?)4dqfxH%vJQ zrbi*Ugq|;$%NlvthBf@BC2NNI*}LU`s!s<;Yy^=YMC&_682%))n@SD!@2n-?%~&<3 z;b$^9Y$S?d3Kl1ay=ryU-w5Khr z?xW7C56Z6E-n%`dnA?Bk@^aK2H_htA)4`($FP&~!JCHc=L*M>W&Y$*{mAB157O1Y7 z_jaq~ygsRNBW8N#y@}=Te+4RvhQQ+C>w&rxcXH}}TYa_4yhhy7Q-*uL3Ez|k=)}2m zBU9_X_%&z9vc=ZZ_vZk9G%}Fr{&eAm_#c;Q+NVD6T%iv?cdC8F?-Je3x0V)cHigE{ zTUz`dW-a@B^u`iz{kHl2XD{!!tRi0@#0wK=Mko7Mn?DJ5Ud(OVJ#wb!&30w=ep}C- zJ#@#dS6N!y!}i@DJ-G9&m-CCqkLUHoZwu|&%dPbI-MhO6C!5IKmlw?K?d{DeDk{nu zyD@YojIo&I!k1S%^3T5URR5uMv4r5WeB9mry*l=b|Ckv&zjIs1`L^L_mYQC; zcI9Mjz=GWow{Fd=Uw&p<>K rOIx?)nZd7f+AOEr<|XU}D={o@iDUG5?_U+hS3~9cjlS;khF$*vu6XqK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/item/end_fish.png b/src/main/resources/assets/betterend/textures/item/end_fish.png new file mode 100644 index 0000000000000000000000000000000000000000..26dc684410f15119a1d9cfd541c1ba28a92c10eb GIT binary patch literal 2185 zcmb_e4Qvx-7;ZN<5K00ef%21Z9uOsPy}$n5K^db(wqTJ!BQpWn-FIKxllHFM-PUdi zVI7K07W~7=pD~~TOw0s~$&!g1&PWVJLX3(aE{m99jyiYE}-Vp&*`N(f*BG%yiHWW|SH>*&NWS@Pj)TtOt!$|NXnM@`fN!Foi5t8OOj-(ipVF-jE^ajNcQiP(;u3XQEEik?B#gm0R16(q=^_@X6bu&O zBhtp>MYL`#tw$NV}(YoEU;jHzu6cs_T(B_k<_F<*9??j0|SBqeKE?O|iS1Y<9 zC;(Omd^k$gAjNsNGn;6xANI4P z0>n|24w;5_1Bg5ZDJD#~T~3DJ01F7lBTyU!fN@K%0^2j1j9w`rb}y@$m4p}>Hq3A? zRw4k$c?nK*0(9~UgeZ9=iUoo@Ooegmueg3SrfNY|LYlLtp>xLKt7IK@uOa`6tcDx& zqnM24yu=H@w7U-nW}l&i=cnZnbb7dqhG~;gh)5sM{9%}`hK;14!O95I^kMu(-Y@p(qxrA1Qm9;+=HCjgOdpUR)3rln6vS zD2YFMJrC#Fe|KZVx9fkchcx%jVXKkOf`4dkWmiW-ChPG_|CcbTwz_y^U|Cm+c&v8M?7O-FxT!2Us6nLT7fj ze)q?qt)pc2(T=8<-b(kLx}w&)tMupBjovm`G5@2j)-Q$zFaMU^bXsmd-v7&2kt2^k z@wVUDd8@zd{g&PnS6;PUoco#Ws&>A0@tt=U94SfK*Z#O@W?RF?>e)3{e|T@S?ZC6v z+V8v8HoI*0a}zTlLNfL_H=4RHojlZIt61MDQrk0S(_7gIoxZ!H4pzQ$uHq;goxYr{ z8q-f*U0}SCzI$^0*6w$v+FstDZn;>t*m8ZK_uE7E_Q0*Kwv=YDTiTD5cXv-(Zuf?Q z{mXtH=<67ow`&TMIb0`tZ|_J8jW=hMTPH8t+B37K$+bl+y@b~`eSTodH)U$u@1-x) zi>aHx&g;Itx6huEBzt>?n7X$0hOp0vJKkrT(R|GIVacbq9(zxB zyv+Jqc-QI8Un^fuD{tLg^V8kz^{JPK&e&|t$K0)5hhMxf;ljuJCQkmOW*vp?ZV^i@ Z7bYD%Teoghi}`1vdg+Ql+mhPmKLMX+@M!=5 literal 0 HcmV?d00001