From 419d8a2dabb52afe1fd79734747bee4e45ed12f9 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Wed, 30 Sep 2020 12:02:20 +0300 Subject: [PATCH] Fixes --- .../blocks/BlockMossyGlowshroomSapling.java | 7 ++- .../blocks/basis/BlockFeatureSapling.java | 9 ++-- .../gui/EndStoneSmelterRecipeBookScreen.java | 10 +++++ .../gui/EndStoneSmelterScreenHandler.java | 2 + .../common/DefaultBiomeCreatorMixin.java | 21 +++++++++ .../ru/betterend/recipe/AlloyingRecipe.java | 13 ++++-- .../recipe/AlloyingRecipeSerializer.java | 7 ++- .../betterend/registry/FeatureRegistry.java | 3 +- .../world/biome/BiomeFoggyMushroomland.java | 3 +- .../betterend/world/features/EndFeature.java | 43 ++++++++++++++----- .../resources/betterend.mixins.common.json | 1 + 11 files changed, 93 insertions(+), 26 deletions(-) create mode 100644 src/main/java/ru/betterend/mixin/common/DefaultBiomeCreatorMixin.java diff --git a/src/main/java/ru/betterend/blocks/BlockMossyGlowshroomSapling.java b/src/main/java/ru/betterend/blocks/BlockMossyGlowshroomSapling.java index 30c4bc6e..07b20bf8 100644 --- a/src/main/java/ru/betterend/blocks/BlockMossyGlowshroomSapling.java +++ b/src/main/java/ru/betterend/blocks/BlockMossyGlowshroomSapling.java @@ -1,7 +1,6 @@ package ru.betterend.blocks; -import net.minecraft.world.gen.feature.DefaultFeatureConfig; -import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.ConfiguredFeature; import ru.betterend.blocks.basis.BlockFeatureSapling; import ru.betterend.registry.FeatureRegistry; @@ -11,7 +10,7 @@ public class BlockMossyGlowshroomSapling extends BlockFeatureSapling { } @Override - protected Feature getFeature() { - return FeatureRegistry.MOSSY_GLOWSHROOM.getFeature(); + protected ConfiguredFeature getFeature() { + return FeatureRegistry.MOSSY_GLOWSHROOM.getFeatureConfigured(); } } diff --git a/src/main/java/ru/betterend/blocks/basis/BlockFeatureSapling.java b/src/main/java/ru/betterend/blocks/basis/BlockFeatureSapling.java index 39e45e5c..5db42213 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockFeatureSapling.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockFeatureSapling.java @@ -18,8 +18,7 @@ import net.minecraft.world.BlockView; import net.minecraft.world.World; import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldView; -import net.minecraft.world.gen.feature.DefaultFeatureConfig; -import net.minecraft.world.gen.feature.Feature; +import net.minecraft.world.gen.feature.ConfiguredFeature; import ru.betterend.client.ERenderLayer; import ru.betterend.client.IRenderTypeable; import ru.betterend.registry.BlockTagRegistry; @@ -47,7 +46,7 @@ public abstract class BlockFeatureSapling extends BlockBaseNotFull implements Fe .ticksRandomly()); } - protected abstract Feature getFeature(); + protected abstract ConfiguredFeature getFeature(); @Override public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext ePos) { @@ -79,8 +78,8 @@ public abstract class BlockFeatureSapling extends BlockBaseNotFull implements Fe @Override public void grow(ServerWorld world, Random random, BlockPos pos, BlockState state) { - BlocksHelper.setWithoutUpdate(world, pos, Blocks.AIR.getDefaultState()); - getFeature().generate(world, world.getChunkManager().getChunkGenerator(), random, pos, DefaultFeatureConfig.INSTANCE); + BlocksHelper.setWithoutUpdate(world, pos, Blocks.AIR.getDefaultState()); + getFeature().generate(world, world.getChunkManager().getChunkGenerator(), random, pos); } @Override diff --git a/src/main/java/ru/betterend/client/gui/EndStoneSmelterRecipeBookScreen.java b/src/main/java/ru/betterend/client/gui/EndStoneSmelterRecipeBookScreen.java index 312658e0..22d3a4bc 100644 --- a/src/main/java/ru/betterend/client/gui/EndStoneSmelterRecipeBookScreen.java +++ b/src/main/java/ru/betterend/client/gui/EndStoneSmelterRecipeBookScreen.java @@ -8,6 +8,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; + import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.recipebook.BlastFurnaceRecipeBookScreen; @@ -18,6 +19,7 @@ import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.Recipe; import net.minecraft.screen.slot.Slot; import net.minecraft.util.collection.DefaultedList; + import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity; @Environment(EnvType.CLIENT) @@ -33,6 +35,14 @@ public class EndStoneSmelterRecipeBookScreen extends BlastFurnaceRecipeBookScree return EndStoneSmelterBlockEntity.availableFuels().keySet(); } + @Override + public void slotClicked(Slot slot) { + super.slotClicked(slot); + if (slot != null && slot.id < this.craftingScreenHandler.getCraftingSlotCount()) { + this.fuelSlot = null; + } + } + @Override public void showGhostRecipe(Recipe recipe, List slots) { this.ghostSlots.reset(); diff --git a/src/main/java/ru/betterend/client/gui/EndStoneSmelterScreenHandler.java b/src/main/java/ru/betterend/client/gui/EndStoneSmelterScreenHandler.java index 63c7d6c9..b9612d06 100644 --- a/src/main/java/ru/betterend/client/gui/EndStoneSmelterScreenHandler.java +++ b/src/main/java/ru/betterend/client/gui/EndStoneSmelterScreenHandler.java @@ -3,6 +3,7 @@ package ru.betterend.client.gui; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry; + import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.Inventory; @@ -19,6 +20,7 @@ import net.minecraft.screen.ScreenHandlerType; import net.minecraft.screen.slot.Slot; import net.minecraft.util.Identifier; import net.minecraft.world.World; + import ru.betterend.BetterEnd; import ru.betterend.blocks.EndStoneSmelter; import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity; diff --git a/src/main/java/ru/betterend/mixin/common/DefaultBiomeCreatorMixin.java b/src/main/java/ru/betterend/mixin/common/DefaultBiomeCreatorMixin.java new file mode 100644 index 00000000..91827fa3 --- /dev/null +++ b/src/main/java/ru/betterend/mixin/common/DefaultBiomeCreatorMixin.java @@ -0,0 +1,21 @@ +package ru.betterend.mixin.common; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.DefaultBiomeCreator; +import net.minecraft.world.biome.GenerationSettings; +import net.minecraft.world.gen.GenerationStep; + +import ru.betterend.registry.FeatureRegistry; + +@Mixin(DefaultBiomeCreator.class) +public abstract class DefaultBiomeCreatorMixin { + @Inject(method = "composeEndSpawnSettings(Lnet/minecraft/world/biome/GenerationSettings$Builder;)Lnet/minecraft/world/biome/Biome;", at = @At("HEAD")) + private static void addEndOres(GenerationSettings.Builder builder, CallbackInfoReturnable rcinfo) { + //builder.feature(GenerationStep.Feature.UNDERGROUND_ORES, FeatureRegistry.ENDER_ORE.getFeatureConfigured()); + } +} diff --git a/src/main/java/ru/betterend/recipe/AlloyingRecipe.java b/src/main/java/ru/betterend/recipe/AlloyingRecipe.java index 7b2d4498..31f6e436 100644 --- a/src/main/java/ru/betterend/recipe/AlloyingRecipe.java +++ b/src/main/java/ru/betterend/recipe/AlloyingRecipe.java @@ -33,10 +33,10 @@ public class AlloyingRecipe implements Recipe { protected final int smeltTime; - public AlloyingRecipe(Identifier id, Ingredient primaryInput, Ingredient secondaryInput, + public AlloyingRecipe(Identifier id, String group, Ingredient primaryInput, Ingredient secondaryInput, ItemStack output, float experience, int smeltTime) { - this.group = String.format("%s:%s", GROUP, id.getPath()); + this.group = group; this.id = id; this.primaryInput = primaryInput; this.secondaryInput = secondaryInput; @@ -113,6 +113,7 @@ public class AlloyingRecipe implements Recipe { public static Builder create(String id) { INSTANCE.id = BetterEnd.getResId(id); + INSTANCE.group = String.format("%s:%s", GROUP, id); INSTANCE.primaryInput = null; INSTANCE.secondaryInput = null; INSTANCE.output = null; @@ -126,11 +127,17 @@ public class AlloyingRecipe implements Recipe { private Ingredient primaryInput; private Ingredient secondaryInput; private ItemStack output; + private String group; private float experience; private int smeltTime; private Builder() {} + public Builder setGroup(String group) { + this.group = group; + return this; + } + public Builder setPrimaryInput(ItemConvertible... inputs) { this.primaryInput = Ingredient.ofItems(inputs); return this; @@ -192,7 +199,7 @@ public class AlloyingRecipe implements Recipe { } else if(output == null) { throw new IllegalArgumentException("Output can't be null!"); } - EndRecipeManager.addRecipe(AlloyingRecipe.TYPE, new AlloyingRecipe(id, primaryInput, secondaryInput, output, experience, smeltTime)); + EndRecipeManager.addRecipe(AlloyingRecipe.TYPE, new AlloyingRecipe(id, group, primaryInput, secondaryInput, output, experience, smeltTime)); } } } diff --git a/src/main/java/ru/betterend/recipe/AlloyingRecipeSerializer.java b/src/main/java/ru/betterend/recipe/AlloyingRecipeSerializer.java index d3facb3a..fad08f52 100644 --- a/src/main/java/ru/betterend/recipe/AlloyingRecipeSerializer.java +++ b/src/main/java/ru/betterend/recipe/AlloyingRecipeSerializer.java @@ -19,6 +19,7 @@ public class AlloyingRecipeSerializer implements RecipeSerializer { return new IllegalStateException("Item: " + rusultStr + " does not exist"); @@ -26,22 +27,24 @@ public class AlloyingRecipeSerializer implements RecipeSerializer feature; - private final ConfiguredFeature featureConfigured; - private final GenerationStep.Feature featureStep; + private Feature feature; + private ConfiguredFeature featureConfigured; + private GenerationStep.Feature featureStep; + + private EndFeature() {} public EndFeature(String name, Feature feature, GenerationStep.Feature featureStep, ConfiguredFeature configuredFeature) { - Identifier id = new Identifier(BetterEnd.MOD_ID, name); + Identifier id = BetterEnd.getResId(name); this.featureStep = featureStep; this.feature = Registry.register(Registry.FEATURE, id, feature); this.featureConfigured = Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, id, configuredFeature); } public EndFeature(String name, Feature feature) { - Identifier id = new Identifier(BetterEnd.MOD_ID, name); + Identifier id = BetterEnd.getResId(name); this.featureStep = GenerationStep.Feature.VEGETAL_DECORATION; this.feature = Registry.register(Registry.FEATURE, id, feature); this.featureConfigured = Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, id, feature.configure(FeatureConfig.DEFAULT).decorate(Decorator.CHANCE.configure(new ChanceDecoratorConfig(100)))); } public EndFeature(String name, Feature feature, int density) { - Identifier id = new Identifier(BetterEnd.MOD_ID, name); + Identifier id = BetterEnd.getResId(name); this.featureStep = GenerationStep.Feature.VEGETAL_DECORATION; this.feature = Registry.register(Registry.FEATURE, id, feature); this.featureConfigured = Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, id, feature.configure(FeatureConfig.DEFAULT).decorate(ConfiguredFeatures.Decorators.SQUARE_HEIGHTMAP).repeatRandomly(density)); //return new EndFeature(name, feature, GenerationStep.Feature.VEGETAL_DECORATION, feature.configure(FeatureConfig.DEFAULT).decorate(ConfiguredFeatures.Decorators.SQUARE_HEIGHTMAP).repeatRandomly(4)); } - public static EndFeature MakeRawGenFeature(String name, Feature feature, int chance) { + public static EndFeature makeRawGenFeature(String name, Feature feature, int chance) { ConfiguredFeature configured = feature.configure(FeatureConfig.DEFAULT).decorate(Decorator.CHANCE.configure(new ChanceDecoratorConfig(100))); return new EndFeature(name, feature, GenerationStep.Feature.RAW_GENERATION, configured); } - public static EndFeature MakeLakeFeature(String name, Feature feature, int chance) { + public static EndFeature makeLakeFeature(String name, Feature feature, int chance) { ConfiguredFeature configured = feature.configure(FeatureConfig.DEFAULT).decorate(Decorator.CHANCE.configure(new ChanceDecoratorConfig(100))); return new EndFeature(name, feature, GenerationStep.Feature.LAKES, configured); } - - public Feature getFeature() { + + public static EndFeature makeOreFeature(String name, Block blockOre, int veins, int veinSize, int offset, int minY, int maxY) { + EndFeature newFeature = new EndFeature(); + OreFeatureConfig featureConfig = new OreFeatureConfig(new BlockMatchRuleTest(Blocks.END_STONE), blockOre.getDefaultState(), veinSize); + RangeDecoratorConfig rangeDecorator = new RangeDecoratorConfig(offset, minY, maxY); + ConfiguredFeature oreFeature = Feature.ORE.configure(featureConfig) + .decorate(Decorator.RANGE.configure(rangeDecorator)) + .spreadHorizontally() + .repeat(veins); + newFeature.feature = Feature.ORE; + newFeature.featureStep = GenerationStep.Feature.UNDERGROUND_ORES; + newFeature.featureConfigured = Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, BetterEnd.getResId(name), oreFeature); + + return newFeature; + } + + public Feature getFeature() { return feature; } diff --git a/src/main/resources/betterend.mixins.common.json b/src/main/resources/betterend.mixins.common.json index 4c202460..245f1613 100644 --- a/src/main/resources/betterend.mixins.common.json +++ b/src/main/resources/betterend.mixins.common.json @@ -9,6 +9,7 @@ "ServerPlayNetworkHandlerMixin", "TagGroupLoaderMixin", "CraftingScreenHandlerMixin", + "DefaultBiomeCreatorMixin", "TagAccessor" ], "injectors": {