From 452fbf0497acc16d2b7a50767410604762f98b15 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 8 Nov 2020 01:32:31 +0300 Subject: [PATCH 1/4] Shadow walker --- .../ru/betterend/blocks/InfusionPedestal.java | 1 - .../betterend/blocks/basis/BlockPedestal.java | 5 +-- .../ru/betterend/entity/EntityEndFish.java | 3 +- .../ru/betterend/registry/EndEntities.java | 4 +++ .../registry/EndEntitiesRenders.java | 2 ++ .../java/ru/betterend/registry/EndSounds.java | 3 ++ .../resources/assets/betterend/sounds.json | 31 +++++++++++++++++++ 7 files changed, 45 insertions(+), 4 deletions(-) diff --git a/src/main/java/ru/betterend/blocks/InfusionPedestal.java b/src/main/java/ru/betterend/blocks/InfusionPedestal.java index 6c2e5710..f6c0a1c3 100644 --- a/src/main/java/ru/betterend/blocks/InfusionPedestal.java +++ b/src/main/java/ru/betterend/blocks/InfusionPedestal.java @@ -9,7 +9,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; - import ru.betterend.blocks.basis.BlockPedestal; import ru.betterend.blocks.entities.InfusionPedestalEntity; diff --git a/src/main/java/ru/betterend/blocks/basis/BlockPedestal.java b/src/main/java/ru/betterend/blocks/basis/BlockPedestal.java index ec785d7c..0144f293 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockPedestal.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockPedestal.java @@ -23,6 +23,7 @@ import net.minecraft.loot.context.LootContextParameters; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; import net.minecraft.state.property.EnumProperty; +import net.minecraft.tag.BlockTags; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; import net.minecraft.util.Identifier; @@ -128,7 +129,7 @@ public class BlockPedestal extends BlockBaseNotFull implements BlockEntityProvid BlockPos pos = context.getBlockPos(); BlockState upState = world.getBlockState(pos.up()); BlockState downState = world.getBlockState(pos.down()); - boolean upSideSolid = upState.isSideSolidFullSquare(world, pos.up(), Direction.DOWN); + boolean upSideSolid = upState.isSideSolidFullSquare(world, pos.up(), Direction.DOWN) || upState.isIn(BlockTags.WALLS); boolean hasPedestalOver = upState.getBlock() instanceof BlockPedestal; boolean hasPedestalUnder = downState.getBlock() instanceof BlockPedestal; if (!hasPedestalOver && hasPedestalUnder && upSideSolid) { @@ -160,7 +161,7 @@ public class BlockPedestal extends BlockBaseNotFull implements BlockEntityProvid if (direction != Direction.UP && direction != Direction.DOWN) return state; BlockState upState = world.getBlockState(pos.up()); BlockState downState = world.getBlockState(pos.down()); - boolean upSideSolid = upState.isSideSolidFullSquare(world, pos.up(), Direction.DOWN); + boolean upSideSolid = upState.isSideSolidFullSquare(world, pos.up(), Direction.DOWN) || upState.isIn(BlockTags.WALLS); boolean hasPedestalOver = upState.getBlock() instanceof BlockPedestal; boolean hasPedestalUnder = downState.getBlock() instanceof BlockPedestal; if (direction == Direction.UP) { diff --git a/src/main/java/ru/betterend/entity/EntityEndFish.java b/src/main/java/ru/betterend/entity/EntityEndFish.java index 557d81af..1b584a94 100644 --- a/src/main/java/ru/betterend/entity/EntityEndFish.java +++ b/src/main/java/ru/betterend/entity/EntityEndFish.java @@ -15,6 +15,7 @@ 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; @@ -60,7 +61,7 @@ public class EntityEndFish extends SchoolingFishEntity { @Override protected ItemStack getFishBucketItem() { - return null; + return new ItemStack(Items.WATER_BUCKET); } @Override diff --git a/src/main/java/ru/betterend/registry/EndEntities.java b/src/main/java/ru/betterend/registry/EndEntities.java index 6722d2fc..e9922a65 100644 --- a/src/main/java/ru/betterend/registry/EndEntities.java +++ b/src/main/java/ru/betterend/registry/EndEntities.java @@ -9,11 +9,13 @@ import net.minecraft.entity.EntityType.EntityFactory; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.SpawnGroup; import net.minecraft.entity.attribute.DefaultAttributeContainer.Builder; +import net.minecraft.entity.mob.HostileEntity; import net.minecraft.util.registry.Registry; import ru.betterend.BetterEnd; import ru.betterend.entity.EntityDragonfly; import ru.betterend.entity.EntityEndFish; import ru.betterend.entity.EntityEndSlime; +import ru.betterend.entity.EntityShadowWalker; import ru.betterend.util.MHelper; import ru.betterend.util.SpawnHelper; @@ -21,10 +23,12 @@ public class EndEntities { public static final EntityType DRAGONFLY = register("dragonfly", SpawnGroup.AMBIENT, 0.6F, 0.5F, EntityDragonfly::new, EntityDragonfly.createMobAttributes(), true, MHelper.color(32, 42, 176), MHelper.color(115, 225, 249)); public static final EntityType END_SLIME = register("end_slime", SpawnGroup.MONSTER, 2F, 2F, EntityEndSlime::new, EntityEndSlime.createMobAttributes(), false, MHelper.color(28, 28, 28), MHelper.color(99, 11, 99)); public static final EntityType END_FISH = register("end_fish", SpawnGroup.WATER_AMBIENT, 0.5F, 0.5F, EntityEndFish::new, EntityEndFish.createMobAttributes(), true, MHelper.color(3, 50, 76), MHelper.color(120, 206, 255)); + public static final EntityType SHADOW_WALKER = register("shadow_walker", SpawnGroup.MONSTER, 0.6F, 1.95F, EntityShadowWalker::new, EntityShadowWalker.createMobAttributes(), true, MHelper.color(30, 30, 30), MHelper.color(5, 5, 5)); public static void register() { SpawnHelper.restrictionLand(END_SLIME, EntityEndSlime::canSpawn); SpawnHelper.restrictionWater(END_FISH, EntityEndFish::canSpawn); + SpawnHelper.restrictionWater(SHADOW_WALKER, HostileEntity::canSpawnInDark); } protected static EntityType register(String name, SpawnGroup group, float width, float height, EntityFactory entity) { diff --git a/src/main/java/ru/betterend/registry/EndEntitiesRenders.java b/src/main/java/ru/betterend/registry/EndEntitiesRenders.java index c32bc522..e72afbdf 100644 --- a/src/main/java/ru/betterend/registry/EndEntitiesRenders.java +++ b/src/main/java/ru/betterend/registry/EndEntitiesRenders.java @@ -6,6 +6,7 @@ import net.minecraft.entity.EntityType; import ru.betterend.entity.render.RendererEntityDragonfly; import ru.betterend.entity.render.RendererEntityEndFish; import ru.betterend.entity.render.RendererEntityEndSlime; +import ru.betterend.entity.render.RendererEntityShadowWalker; public class EndEntitiesRenders { @@ -13,6 +14,7 @@ public class EndEntitiesRenders { register(EndEntities.DRAGONFLY, RendererEntityDragonfly.class); register(EndEntities.END_SLIME, RendererEntityEndSlime.class); register(EndEntities.END_FISH, RendererEntityEndFish.class); + register(EndEntities.SHADOW_WALKER, RendererEntityShadowWalker.class); } private static void register(EntityType type, Class> renderer) { diff --git a/src/main/java/ru/betterend/registry/EndSounds.java b/src/main/java/ru/betterend/registry/EndSounds.java index 9b7db73e..da427e20 100644 --- a/src/main/java/ru/betterend/registry/EndSounds.java +++ b/src/main/java/ru/betterend/registry/EndSounds.java @@ -22,6 +22,9 @@ public class EndSounds { // Entity public static final SoundEvent ENTITY_DRAGONFLY = register("entity", "dragonfly"); + public static final SoundEvent ENTITY_SHADOW_WALKER = register("entity", "shadow_walker"); + public static final SoundEvent ENTITY_SHADOW_WALKER_DAMAGE = register("entity", "shadow_walker_damage"); + public static final SoundEvent ENTITY_SHADOW_WALKER_DEATH = register("entity", "shadow_walker_death"); public static void register() {} diff --git a/src/main/resources/assets/betterend/sounds.json b/src/main/resources/assets/betterend/sounds.json index c21b4b9f..b471bcb9 100644 --- a/src/main/resources/assets/betterend/sounds.json +++ b/src/main/resources/assets/betterend/sounds.json @@ -152,5 +152,36 @@ "stream": false } ] + }, + "betterend.entity.shadow_walker": { + "category": "entity", + "sounds": [ + { + "name": "betterend:entity/shadow_walker/shadow_walker_1", + "stream": false + }, + { + "name": "betterend:entity/shadow_walker/shadow_walker_2", + "stream": false + } + ] + }, + "betterend.entity.shadow_walker_damage": { + "category": "entity", + "sounds": [ + { + "name": "betterend:entity/shadow_walker/shadow_walker_damage", + "stream": false + } + ] + }, + "betterend.entity.shadow_walker_death": { + "category": "entity", + "sounds": [ + { + "name": "betterend:entity/shadow_walker/shadow_walker_death", + "stream": false + } + ] } } From 76804a4f09cee645dbe22b7019c630e104d99b46 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 8 Nov 2020 01:35:16 +0300 Subject: [PATCH 2/4] Merge --- .../ru/betterend/blocks/InfusionPedestal.java | 11 + .../entities/InfusionPedestalEntity.java | 12 + .../recipe/builders/InfusionRecipe.java | 213 ++++++++++++++++-- .../ru/betterend/rituals/InfusionRitual.java | 38 +++- 4 files changed, 252 insertions(+), 22 deletions(-) diff --git a/src/main/java/ru/betterend/blocks/InfusionPedestal.java b/src/main/java/ru/betterend/blocks/InfusionPedestal.java index f6c0a1c3..fa510931 100644 --- a/src/main/java/ru/betterend/blocks/InfusionPedestal.java +++ b/src/main/java/ru/betterend/blocks/InfusionPedestal.java @@ -5,10 +5,15 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.block.ShapeContext; import net.minecraft.block.entity.BlockEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; +import net.minecraft.world.World; import ru.betterend.blocks.basis.BlockPedestal; import ru.betterend.blocks.entities.InfusionPedestalEntity; @@ -21,6 +26,12 @@ public class InfusionPedestal extends BlockPedestal { this.height = 1.08F; } + @Override + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + ActionResult result = super.onUse(state, world, pos, player, hand, hit); + return result; + } + @Override public BlockEntity createBlockEntity(BlockView world) { return new InfusionPedestalEntity(); diff --git a/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java b/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java index 315f5b71..8f022ddb 100644 --- a/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java +++ b/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java @@ -1,5 +1,8 @@ package ru.betterend.blocks.entities; +import net.minecraft.block.BlockState; +import net.minecraft.nbt.CompoundTag; + import ru.betterend.rituals.InfusionRitual; public class InfusionPedestalEntity extends PedestalBlockEntity { @@ -9,5 +12,14 @@ public class InfusionPedestalEntity extends PedestalBlockEntity { public boolean hasRitual() { return this.activeRitual != null; } + + @Override + public void fromTag(BlockState state, CompoundTag tag) { + super.fromTag(state, tag); + } + @Override + public CompoundTag toTag(CompoundTag tag) { + return super.toTag(tag); + } } diff --git a/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java b/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java index f6af7230..675e6841 100644 --- a/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java +++ b/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java @@ -1,55 +1,232 @@ package ru.betterend.recipe.builders; +import java.util.Arrays; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; + +import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.RecipeType; 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; import ru.betterend.rituals.InfusionRitual; public class InfusionRecipe implements Recipe { - - @Override - public boolean matches(InfusionRitual inv, World world) { - // TODO Auto-generated method stub - return false; + + public final static String GROUP = "infusion"; + public final static RecipeType TYPE = EndRecipeManager.registerType(GROUP); + public final static Serializer SERIALIZER = EndRecipeManager.registerSerializer(GROUP, new Serializer()); + public final static Identifier ID = BetterEnd.makeID(GROUP); + + private final Identifier id; + private Ingredient input; + private ItemStack output; + private int time = 1; + private Ingredient[] catalysts = new Ingredient[8]; + + private InfusionRecipe(Identifier id) { + this(id, null, null); + } + + private InfusionRecipe(Identifier id, Ingredient input, ItemStack output) { + this.id = id; + this.input = input; + this.output = output; + Arrays.fill(catalysts, Ingredient.EMPTY); + } + + public int getInfusionTime() { + return this.time; } @Override - public ItemStack craft(InfusionRitual inv) { - // TODO Auto-generated method stub - return null; + public boolean matches(InfusionRitual inv, World world) { + boolean valid = this.input.test(inv.getStack(0)); + if (!valid) return false; + for (int i = 1; i < 9; i++) { + valid &= this.catalysts[i].test(inv.getStack(i)); + } + return valid; + } + + @Override + public ItemStack craft(InfusionRitual ritual) { + return this.output.copy(); } @Override public boolean fits(int width, int height) { - // TODO Auto-generated method stub - return false; + return true; } @Override public ItemStack getOutput() { - // TODO Auto-generated method stub - return null; + return this.output; } @Override public Identifier getId() { - // TODO Auto-generated method stub - return null; + return this.id; } @Override public RecipeSerializer getSerializer() { - // TODO Auto-generated method stub - return null; + return SERIALIZER; } @Override public RecipeType getType() { - // TODO Auto-generated method stub - return null; + return TYPE; + } + + public InfusionRecipe fromTag(CompoundTag tag) { + return SERIALIZER.fromTag(tag); } + public CompoundTag toTag(CompoundTag tag) { + return SERIALIZER.toTag(this, tag); + } + + public static class Builder { + private final static Builder INSTANCE = new Builder(); + + public static Builder create(String id) { + return create(BetterEnd.makeID(id)); + } + + public static Builder create(Identifier id) { + INSTANCE.id = id; + INSTANCE.input = null; + INSTANCE.output = null; + INSTANCE.time = 1; + + Arrays.fill(INSTANCE.catalysts, Ingredient.EMPTY); + + return INSTANCE; + } + + private Identifier id; + private Ingredient input; + private ItemStack output; + private int time = 1; + private Ingredient[] catalysts = new Ingredient[8]; + + private Builder() { + Arrays.fill(catalysts, Ingredient.EMPTY); + } + + public Builder setInput(ItemConvertible input) { + this.input = Ingredient.ofItems(input); + return this; + } + + public Builder setOutput(ItemStack output) { + this.output = output; + this.output.setCount(1); + return this; + } + + public Builder setTime(int time) { + this.time = time; + return this; + } + + public Builder addCatalyst(int slot, ItemConvertible item) { + if (slot > 7) return this; + this.catalysts[slot] = Ingredient.ofItems(item); + return this; + } + + public void build() { + if (input == null) { + BetterEnd.LOGGER.warning("Input for Infusion recipe can't be 'null', recipe {} will be ignored!", id); + return; + } + if (output == null) { + BetterEnd.LOGGER.warning("Output for Infusion recipe can't be 'null', recipe {} will be ignored!", id); + return; + } + InfusionRecipe recipe = new InfusionRecipe(id, input, output); + recipe.time = time; + int empty = 0; + for (int i = 0; i < catalysts.length; i++) { + if (catalysts[i].isEmpty()) empty++; + else recipe.catalysts[i] = catalysts[i]; + } + if (empty == catalysts.length) { + BetterEnd.LOGGER.warning("At least one catalyst must be non empty, recipe {} will be ignored!", id); + return; + } + EndRecipeManager.addRecipe(TYPE, recipe); + } + } + + public static class Serializer implements RecipeSerializer { + @Override + public InfusionRecipe read(Identifier id, JsonObject json) { + InfusionRecipe recipe = new InfusionRecipe(id); + recipe.input = Ingredient.fromJson(json.get("input")); + Identifier outId = new Identifier(JsonHelper.getString(json, "output")); + recipe.output = new ItemStack(Registry.ITEM.getOrEmpty(outId).orElseThrow(() -> { + return new IllegalStateException("Item: " + outId + " does not exists!"); + })); + recipe.time = JsonHelper.getInt(json, "time", 1); + JsonArray catalysts = JsonHelper.asArray(json, "catalysts"); + for (int i = 0; i < catalysts.size(); i++) { + ItemStack stack = new ItemStack(Registry.ITEM.getOrEmpty(outId).orElse(null)); + recipe.catalysts[i] = Ingredient.ofStacks( + Arrays.stream(new ItemStack[] { stack })); + } + return recipe; + } + + @Override + public InfusionRecipe read(Identifier id, PacketByteBuf buffer) { + InfusionRecipe recipe = new InfusionRecipe(id); + recipe.input = Ingredient.fromPacket(buffer); + recipe.output = buffer.readItemStack(); + recipe.time = buffer.readVarInt(); + for (int i = 0; i < 9; i++) { + recipe.catalysts[i] = Ingredient.fromPacket(buffer); + } + return recipe; + } + + @Override + public void write(PacketByteBuf buffer, InfusionRecipe recipe) { + recipe.input.write(buffer); + buffer.writeItemStack(recipe.output); + buffer.writeVarInt(recipe.time); + for (int i = 0; i < 9; i++) { + recipe.catalysts[i].write(buffer); + } + } + + public InfusionRecipe fromTag(CompoundTag tag) { + Identifier id = new Identifier(tag.getString("id")); + InfusionRecipe recipe = new InfusionRecipe(id); + + return recipe; + } + + public CompoundTag toTag(InfusionRecipe recipe, CompoundTag tag) { + CompoundSerializer inputSerializer = CompoundSerializer.class.cast(recipe.input); + tag.put("input", inputSerializer.toTag(new CompoundTag())); + tag.put("output", recipe.output.toTag(new CompoundTag())); + + return tag; + } + } } diff --git a/src/main/java/ru/betterend/rituals/InfusionRitual.java b/src/main/java/ru/betterend/rituals/InfusionRitual.java index 2887283e..03864391 100644 --- a/src/main/java/ru/betterend/rituals/InfusionRitual.java +++ b/src/main/java/ru/betterend/rituals/InfusionRitual.java @@ -1,19 +1,42 @@ package ru.betterend.rituals; +import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.Inventory; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import ru.betterend.recipe.builders.InfusionRecipe; public class InfusionRitual implements Inventory { + private final World world; + private final BlockPos worldPos; + private InfusionRecipe activeRecipe; + private int progress = 0; + private int time = 0; + + public InfusionRitual(World world, BlockPos pos) { + this.world = world; + this.worldPos = pos; + } + public void tick() { - // TODO + if (!hasRecipe()) return; + this.progress++; + if (progress == time) { + + } + } + + public boolean hasRecipe() { + return this.activeRecipe != null; } @Override public void clear() { - // TODO Auto-generated method stub - + // TODO } @Override @@ -53,6 +76,13 @@ public class InfusionRitual implements Inventory { @Override public boolean canPlayerUse(PlayerEntity player) { - return false; + return true; + } + + public void fromTag(CompoundTag tag) { + } + + public CompoundTag toTag(CompoundTag tag) { + return tag; } } From ef70376ed43fcd15ac0271d2650c3266b80b0c54 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 8 Nov 2020 02:03:23 +0300 Subject: [PATCH 3/4] Pillar model fix --- src/main/java/ru/betterend/blocks/basis/BlockPedestal.java | 2 +- src/main/java/ru/betterend/world/biome/BiomeShadowForest.java | 4 +++- .../assets/betterend/models/block/pedestal_column.json | 1 + .../assets/betterend/models/block/pedestal_column_top.json | 1 + 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/betterend/blocks/basis/BlockPedestal.java b/src/main/java/ru/betterend/blocks/basis/BlockPedestal.java index 0144f293..fd14aa3b 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockPedestal.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockPedestal.java @@ -165,7 +165,7 @@ public class BlockPedestal extends BlockBaseNotFull implements BlockEntityProvid boolean hasPedestalOver = upState.getBlock() instanceof BlockPedestal; boolean hasPedestalUnder = downState.getBlock() instanceof BlockPedestal; if (direction == Direction.UP) { - upSideSolid = newState.isSideSolidFullSquare(world, posFrom, Direction.DOWN); + upSideSolid = newState.isSideSolidFullSquare(world, posFrom, Direction.DOWN) || newState.isIn(BlockTags.WALLS); hasPedestalOver = newState.getBlock() instanceof BlockPedestal; } else if (direction == Direction.DOWN) { hasPedestalUnder = newState.getBlock() instanceof BlockPedestal; diff --git a/src/main/java/ru/betterend/world/biome/BiomeShadowForest.java b/src/main/java/ru/betterend/world/biome/BiomeShadowForest.java index 1e7f5154..51c2fce8 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeShadowForest.java +++ b/src/main/java/ru/betterend/world/biome/BiomeShadowForest.java @@ -4,6 +4,7 @@ import net.minecraft.entity.EntityType; import net.minecraft.particle.ParticleTypes; import net.minecraft.world.gen.feature.ConfiguredStructureFeatures; import ru.betterend.registry.EndBlocks; +import ru.betterend.registry.EndEntities; import ru.betterend.registry.EndFeatures; import ru.betterend.registry.EndSounds; @@ -31,7 +32,8 @@ public class BiomeShadowForest extends EndBiome { .addFeature(EndFeatures.TAIL_MOSS) .addFeature(EndFeatures.TAIL_MOSS_WOOD) .addStructureFeature(ConfiguredStructureFeatures.END_CITY) - .addMobSpawn(EntityType.ENDERMAN, 80, 1, 4) + .addMobSpawn(EntityType.ENDERMAN, 40, 1, 4) + .addMobSpawn(EndEntities.SHADOW_WALKER, 80, 2, 4) .addMobSpawn(EntityType.PHANTOM, 1, 1, 2)); } } diff --git a/src/main/resources/assets/betterend/models/block/pedestal_column.json b/src/main/resources/assets/betterend/models/block/pedestal_column.json index c0a32d81..08a6dc5c 100644 --- a/src/main/resources/assets/betterend/models/block/pedestal_column.json +++ b/src/main/resources/assets/betterend/models/block/pedestal_column.json @@ -58,6 +58,7 @@ "to": [ 15, 16, 15 ], "faces": { "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#base" }, + "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#base", "cullface": "up" }, "north": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, "south": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, "west": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, diff --git a/src/main/resources/assets/betterend/models/block/pedestal_column_top.json b/src/main/resources/assets/betterend/models/block/pedestal_column_top.json index a733a08a..16722d25 100644 --- a/src/main/resources/assets/betterend/models/block/pedestal_column_top.json +++ b/src/main/resources/assets/betterend/models/block/pedestal_column_top.json @@ -33,6 +33,7 @@ "to": [ 15, 16, 15 ], "faces": { "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#base" }, + "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#base", "cullface": "up" }, "north": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, "south": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, "west": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, From 6bd17612bbac5ba50710cf4e3b520d0dbff4adc0 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 8 Nov 2020 02:12:41 +0300 Subject: [PATCH 4/4] Mob spawn fixes --- .../ru/betterend/blocks/entities/InfusionPedestalEntity.java | 1 - src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java | 1 - src/main/java/ru/betterend/registry/EndEntities.java | 2 +- src/main/java/ru/betterend/rituals/InfusionRitual.java | 1 - src/main/java/ru/betterend/world/biome/BiomeShadowForest.java | 2 +- 5 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java b/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java index 8f022ddb..a0447214 100644 --- a/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java +++ b/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java @@ -2,7 +2,6 @@ package ru.betterend.blocks.entities; import net.minecraft.block.BlockState; import net.minecraft.nbt.CompoundTag; - import ru.betterend.rituals.InfusionRitual; public class InfusionPedestalEntity extends PedestalBlockEntity { diff --git a/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java b/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java index 675e6841..dd955e40 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/EndEntities.java b/src/main/java/ru/betterend/registry/EndEntities.java index e9922a65..601d9fb5 100644 --- a/src/main/java/ru/betterend/registry/EndEntities.java +++ b/src/main/java/ru/betterend/registry/EndEntities.java @@ -28,7 +28,7 @@ public class EndEntities { public static void register() { SpawnHelper.restrictionLand(END_SLIME, EntityEndSlime::canSpawn); SpawnHelper.restrictionWater(END_FISH, EntityEndFish::canSpawn); - SpawnHelper.restrictionWater(SHADOW_WALKER, HostileEntity::canSpawnInDark); + SpawnHelper.restrictionLand(SHADOW_WALKER, HostileEntity::canSpawnInDark); } protected static EntityType register(String name, SpawnGroup group, float width, float height, EntityFactory entity) { diff --git a/src/main/java/ru/betterend/rituals/InfusionRitual.java b/src/main/java/ru/betterend/rituals/InfusionRitual.java index 03864391..6c192f1c 100644 --- a/src/main/java/ru/betterend/rituals/InfusionRitual.java +++ b/src/main/java/ru/betterend/rituals/InfusionRitual.java @@ -1,6 +1,5 @@ package ru.betterend.rituals; -import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.Inventory; import net.minecraft.item.ItemStack; diff --git a/src/main/java/ru/betterend/world/biome/BiomeShadowForest.java b/src/main/java/ru/betterend/world/biome/BiomeShadowForest.java index 51c2fce8..7d1816e9 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeShadowForest.java +++ b/src/main/java/ru/betterend/world/biome/BiomeShadowForest.java @@ -32,8 +32,8 @@ public class BiomeShadowForest extends EndBiome { .addFeature(EndFeatures.TAIL_MOSS) .addFeature(EndFeatures.TAIL_MOSS_WOOD) .addStructureFeature(ConfiguredStructureFeatures.END_CITY) - .addMobSpawn(EntityType.ENDERMAN, 40, 1, 4) .addMobSpawn(EndEntities.SHADOW_WALKER, 80, 2, 4) + .addMobSpawn(EntityType.ENDERMAN, 40, 1, 4) .addMobSpawn(EntityType.PHANTOM, 1, 1, 2)); } }