diff --git a/src/main/java/ru/betterend/entity/SilkMothEntity.java b/src/main/java/ru/betterend/entity/SilkMothEntity.java index f20237bf..96ee96f7 100644 --- a/src/main/java/ru/betterend/entity/SilkMothEntity.java +++ b/src/main/java/ru/betterend/entity/SilkMothEntity.java @@ -6,8 +6,10 @@ import java.util.Random; import org.jetbrains.annotations.Nullable; import net.minecraft.block.BlockState; +import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.EntityType; import net.minecraft.entity.Flutterer; +import net.minecraft.entity.ItemEntity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.SpawnReason; import net.minecraft.entity.ai.TargetFinder; @@ -22,9 +24,11 @@ import net.minecraft.entity.ai.pathing.EntityNavigation; import net.minecraft.entity.ai.pathing.PathNodeType; import net.minecraft.entity.attribute.DefaultAttributeContainer; import net.minecraft.entity.attribute.EntityAttributes; +import net.minecraft.entity.damage.DamageSource; import net.minecraft.entity.mob.MobEntity; import net.minecraft.entity.passive.AnimalEntity; import net.minecraft.entity.passive.PassiveEntity; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtHelper; import net.minecraft.server.world.ServerWorld; @@ -43,7 +47,9 @@ import ru.betterend.blocks.BlockProperties; import ru.betterend.blocks.SilkMothNestBlock; import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndEntities; +import ru.betterend.registry.EndItems; import ru.betterend.util.BlocksHelper; +import ru.betterend.util.MHelper; public class SilkMothEntity extends AnimalEntity implements Flutterer { private BlockPos hivePos; @@ -152,6 +158,23 @@ public class SilkMothEntity extends AnimalEntity implements Flutterer { return EndEntities.SILK_MOTH.create(world); } + @Override + protected void dropLoot(DamageSource source, boolean causedByPlayer) { + int minCount = 0; + int maxCount = 1; + if (causedByPlayer && this.attackingPlayer != null) { + int looting = EnchantmentHelper.getLooting(this.attackingPlayer); + minCount += looting; + maxCount += looting; + if (maxCount > 2) { + maxCount = 2; + } + } + int count = minCount < maxCount ? MHelper.randRange(minCount, maxCount, random) : maxCount; + ItemEntity drop = new ItemEntity(world, getX(), getY(), getZ(), new ItemStack(EndItems.SILK_FIBER, count)); + this.world.spawnEntity(drop); + } + public static boolean canSpawn(EntityType type, ServerWorldAccess world, SpawnReason spawnReason, BlockPos pos, Random random) { int y = world.getChunk(pos).sampleHeightmap(Type.WORLD_SURFACE, pos.getX() & 15, pos.getY() & 15); return y > 0 && pos.getY() >= y; diff --git a/src/main/java/ru/betterend/recipe/CraftingRecipes.java b/src/main/java/ru/betterend/recipe/CraftingRecipes.java index 791ea368..d4c236fb 100644 --- a/src/main/java/ru/betterend/recipe/CraftingRecipes.java +++ b/src/main/java/ru/betterend/recipe/CraftingRecipes.java @@ -187,6 +187,8 @@ public class CraftingRecipes { .addMaterial('S', Items.STICK) .addMaterial('L', EndItems.LEATHER_STRIPE) .build(); + + GridRecipe.make("fiber_string", Items.STRING).setOutputCount(6).setShape("#", "#", "#").addMaterial('#', EndItems.SILK_FIBER).build(); } private static void registerLantern(String name, Block lantern, Block slab) { diff --git a/src/main/java/ru/betterend/registry/EndBiomes.java b/src/main/java/ru/betterend/registry/EndBiomes.java index 99f7f2c6..8fd56735 100644 --- a/src/main/java/ru/betterend/registry/EndBiomes.java +++ b/src/main/java/ru/betterend/registry/EndBiomes.java @@ -45,7 +45,6 @@ import ru.betterend.world.biome.BiomeSulphurSprings; import ru.betterend.world.biome.BiomeUmbrellaJungle; import ru.betterend.world.biome.CapsacisForestBiome; import ru.betterend.world.biome.EndBiome; -import ru.betterend.world.biome.HangingGardensBiome; import ru.betterend.world.generator.BELayerRandomSource; import ru.betterend.world.generator.BiomePicker; import ru.betterend.world.generator.BiomeType; @@ -86,7 +85,7 @@ public class EndBiomes { public static final EndBiome SULPHUR_SPRINGS = registerBiome(new BiomeSulphurSprings(), BiomeType.LAND); public static final EndBiome UMBRELLA_JUNGLE = registerBiome(new BiomeUmbrellaJungle(), BiomeType.LAND); public static final EndBiome CAPSACIS_FOREST = registerBiome(new CapsacisForestBiome(), BiomeType.LAND); - public static final EndBiome HANGING_GARDENS = registerBiome(new HangingGardensBiome(), BiomeType.LAND); + //public static final EndBiome HANGING_GARDENS = registerBiome(new HangingGardensBiome(), BiomeType.LAND); // Better End Void public static final EndBiome ICE_STARFIELD = registerBiome(new BiomeIceStarfield(), BiomeType.VOID); diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index 0d5f6ba9..b358dfb4 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -201,15 +201,15 @@ public class EndBlocks { public static final WoodenMaterial CAPSACIS = new WoodenMaterial("capsacis", MaterialColor.PURPLE, MaterialColor.LIGHT_BLUE); // Small ecosystem tree - public static final WoodenMaterial INANIS = new WoodenMaterial("inanis", MaterialColor.PURPLE, MaterialColor.LIGHT_BLUE); + //public static final WoodenMaterial INANIS = new WoodenMaterial("inanis", MaterialColor.PURPLE, MaterialColor.LIGHT_BLUE); // Tree from Yuki's ide - public static final Block CEMINUS_SAPLING = registerBlock("ceminus_sapling", new UmbrellaTreeSaplingBlock()); - public static final Block CEMINUS_GRID = registerBlock("ceminus_grid", new UmbrellaTreeMembraneBlock()); - public static final WoodenMaterial CEMINUS = new WoodenMaterial("ceminus", MaterialColor.PURPLE, MaterialColor.LIGHT_BLUE); + //public static final Block CEMINUS_SAPLING = registerBlock("ceminus_sapling", new UmbrellaTreeSaplingBlock()); + //public static final Block CEMINUS_GRID = registerBlock("ceminus_grid", new UmbrellaTreeMembraneBlock()); + //public static final WoodenMaterial CEMINUS = new WoodenMaterial("ceminus", MaterialColor.PURPLE, MaterialColor.LIGHT_BLUE); // For megacolonies - public static final Block VOID_COLONY_MEMBRANE = registerBlock("void_colony_membrane", new UmbrellaTreeMembraneBlock()); + //public static final Block VOID_COLONY_MEMBRANE = registerBlock("void_colony_membrane", new UmbrellaTreeMembraneBlock()); // Small Plants // public static final Block UMBRELLA_MOSS = registerBlock("umbrella_moss", new UmbrellaMossBlock()); diff --git a/src/main/java/ru/betterend/registry/EndItems.java b/src/main/java/ru/betterend/registry/EndItems.java index cc72a360..9c3c64dd 100644 --- a/src/main/java/ru/betterend/registry/EndItems.java +++ b/src/main/java/ru/betterend/registry/EndItems.java @@ -70,6 +70,7 @@ public class EndItems { public final static Item ENCHANTED_PETAL = registerItem("enchanted_petal", new EnchantedPetalItem()); public final static Item LEATHER_STRIPE = registerItem("leather_stripe"); public final static Item LEATHER_WRAPPED_STICK = registerItem("leather_wrapped_stick"); + public final static Item SILK_FIBER = registerItem("silk_fiber"); // Armor // public static final Item TERMINITE_HELMET = registerItem("terminite_helmet", new ArmorItem(EndArmorMaterial.TERMINITE, EquipmentSlot.HEAD, makeItemSettings())); diff --git a/src/main/resources/assets/betterend/textures/item/silk_fiber.png b/src/main/resources/assets/betterend/textures/item/silk_fiber.png new file mode 100644 index 00000000..06bf85f0 Binary files /dev/null and b/src/main/resources/assets/betterend/textures/item/silk_fiber.png differ