Continue migration

This commit is contained in:
Aleksey 2021-04-12 16:34:13 +03:00
parent 47ed597358
commit 33dbfbe633
263 changed files with 1450 additions and 1486 deletions

View file

@ -18,15 +18,14 @@ import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.impl.biome.InternalBiomeData;
import net.fabricmc.fabric.impl.biome.WeightedBiomePicker;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.Minecraft;
import net.minecraft.data.BuiltinRegistries;
import net.minecraft.resources.ResourceKey;
import net.minecraft.server.MinecraftServer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.registry.BuiltinRegistries;
import net.minecraft.core.Registry;
import net.minecraft.util.registry.RegistryKey;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.Biome.Category;
import net.minecraft.world.biome.BiomeKeys;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.biome.Biomes;
import ru.betterend.BetterEnd;
import ru.betterend.config.Configs;
import ru.betterend.integration.Integrations;
@ -75,13 +74,13 @@ public class EndBiomes {
private static Registry<Biome> biomeRegistry;
// Vanilla Land
public static final EndBiome END = registerBiome(BiomeKeys.THE_END, BiomeType.LAND, 1F);
public static final EndBiome END_MIDLANDS = registerSubBiome(BiomeKeys.END_MIDLANDS, END, 0.5F);
public static final EndBiome END_HIGHLANDS = registerSubBiome(BiomeKeys.END_HIGHLANDS, END, 0.5F);
public static final EndBiome END = registerBiome(Biomes.THE_END, BiomeType.LAND, 1F);
public static final EndBiome END_MIDLANDS = registerSubBiome(Biomes.END_MIDLANDS, END, 0.5F);
public static final EndBiome END_HIGHLANDS = registerSubBiome(Biomes.END_HIGHLANDS, END, 0.5F);
// Vanilla Void
public static final EndBiome END_BARRENS = registerBiome(BiomeKeys.END_BARRENS, BiomeType.VOID, 1F);
public static final EndBiome SMALL_END_ISLANDS = registerBiome(BiomeKeys.SMALL_END_ISLANDS, BiomeType.VOID, 1);
public static final EndBiome END_BARRENS = registerBiome(Biomes.END_BARRENS, BiomeType.VOID, 1F);
public static final EndBiome SMALL_END_ISLANDS = registerBiome(Biomes.SMALL_END_ISLANDS, BiomeType.VOID, 1);
// Better End Land
public static final EndBiome FOGGY_MUSHROOMLAND = registerBiome(new FoggyMushroomlandBiome(), BiomeType.LAND);
@ -129,8 +128,8 @@ public class EndBiomes {
Map<String, JsonObject> configs = Maps.newHashMap();
biomeRegistry.forEach((biome) -> {
if (biome.getCategory() == Category.THEEND) {
ResourceLocation id = biomeRegistry.getId(biome);
if (biome.getBiomeCategory() == Biome.BiomeCategory.THEEND) {
ResourceLocation id = biomeRegistry.getKey(biome);
if (Configs.BIOME_CONFIG.getBoolean(id, "enabled", true)) {
if (!LAND_BIOMES.containsImmutable(id) && !VOID_BIOMES.containsImmutable(id)
&& !SUBBIOMES_UNMUTABLES.contains(id)) {
@ -184,22 +183,20 @@ public class EndBiomes {
}
private static void loadFabricAPIBiomes() {
List<RegistryKey<Biome>> biomes = Lists.newArrayList();
biomes.addAll(getBiomes(InternalBiomeData.getEndBiomesMap().get(BiomeKeys.SMALL_END_ISLANDS)));
biomes.addAll(getBiomes(InternalBiomeData.getEndBarrensMap().get(BiomeKeys.END_BARRENS)));
biomes.forEach((key) -> FABRIC_VOID.add(key.getValue()));
List<ResourceKey<Biome>> biomes = Lists.newArrayList();
biomes.addAll(getBiomes(InternalBiomeData.getEndBiomesMap().get(Biomes.SMALL_END_ISLANDS)));
biomes.addAll(getBiomes(InternalBiomeData.getEndBarrensMap().get(Biomes.END_BARRENS)));
biomes.forEach((key) -> FABRIC_VOID.add(key.location()));
if (BetterEnd.isDevEnvironment()) {
System.out.println("==================================");
System.out.println("Added void biomes from Fabric API:");
FABRIC_VOID.forEach((id) -> {
System.out.println(id);
});
FABRIC_VOID.forEach(System.out::println);
System.out.println("==================================");
}
}
private static List<RegistryKey<Biome>> getBiomes(WeightedBiomePicker picker) {
private static List<ResourceKey<Biome>> getBiomes(WeightedBiomePicker picker) {
IBiomeList biomeList = (IBiomeList) (Object) picker;
return biomeList == null ? Collections.emptyList() : biomeList.getBiomes();
}
@ -222,7 +219,7 @@ public class EndBiomes {
*/
public static void initRegistry(MinecraftServer server) {
if (biomeRegistry == null) {
biomeRegistry = server.registryAccess().get(Registry.BIOME_KEY);
biomeRegistry = server.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY);
}
}
@ -250,7 +247,7 @@ public class EndBiomes {
* @return registered {@link EndBiome}
*/
public static EndBiome registerBiome(Biome biome, BiomeType type, float fogDensity, float genChance) {
EndBiome endBiome = new EndBiome(BuiltinRegistries.BIOME.getId(biome), biome, fogDensity, genChance, true);
EndBiome endBiome = new EndBiome(BuiltinRegistries.BIOME.getKey(biome), biome, fogDensity, genChance, true);
if (Configs.BIOME_CONFIG.getBoolean(endBiome.getID(), "enabled", true)) {
addToPicker(endBiome, type);
}
@ -282,7 +279,7 @@ public class EndBiomes {
*/
public static EndBiome registerSubBiome(Biome biome, EndBiome parent, float fogDensity, float genChance,
boolean hasCaves) {
EndBiome endBiome = new EndBiome(BuiltinRegistries.BIOME.getId(biome), biome, fogDensity, genChance, hasCaves);
EndBiome endBiome = new EndBiome(BuiltinRegistries.BIOME.getKey(biome), biome, fogDensity, genChance, hasCaves);
if (Configs.BIOME_CONFIG.getBoolean(endBiome.getID(), "enabled", true)) {
parent.addSubBiome(endBiome);
SUBBIOMES.add(endBiome);
@ -365,11 +362,11 @@ public class EndBiomes {
}
}
public static EndBiome registerBiome(RegistryKey<Biome> key, BiomeType type, float genChance) {
public static EndBiome registerBiome(ResourceKey<Biome> key, BiomeType type, float genChance) {
return registerBiome(BuiltinRegistries.BIOME.get(key), type, genChance);
}
public static EndBiome registerSubBiome(RegistryKey<Biome> key, EndBiome parent, float genChance) {
public static EndBiome registerSubBiome(ResourceKey<Biome> key, EndBiome parent, float genChance) {
return registerSubBiome(BuiltinRegistries.BIOME.get(key), parent, genChance, true);
}
@ -387,15 +384,15 @@ public class EndBiomes {
private static void addLandBiomeToFabricApi(EndBiome biome) {
float weight = biome.getGenChanceImmutable();
RegistryKey<Biome> key = BuiltinRegistries.BIOME.getKey(biome.getBiome()).get();
InternalBiomeData.addEndBiomeReplacement(BiomeKeys.END_HIGHLANDS, key, weight);
InternalBiomeData.addEndBiomeReplacement(BiomeKeys.END_MIDLANDS, key, weight);
ResourceKey<Biome> key = BuiltinRegistries.BIOME.getResourceKey(biome.getBiome()).get();
InternalBiomeData.addEndBiomeReplacement(Biomes.END_HIGHLANDS, key, weight);
InternalBiomeData.addEndBiomeReplacement(Biomes.END_MIDLANDS, key, weight);
}
private static void addVoidBiomeToFabricApi(EndBiome biome) {
float weight = biome.getGenChanceImmutable();
RegistryKey<Biome> key = BuiltinRegistries.BIOME.getKey(biome.getBiome()).get();
InternalBiomeData.addEndBiomeReplacement(BiomeKeys.SMALL_END_ISLANDS, key, weight);
ResourceKey<Biome> key = BuiltinRegistries.BIOME.getResourceKey(biome.getBiome()).get();
InternalBiomeData.addEndBiomeReplacement(Biomes.SMALL_END_ISLANDS, key, weight);
}
public static EndBiome getFromBiome(Biome biome) {
@ -406,8 +403,9 @@ public class EndBiomes {
public static EndBiome getRenderBiome(Biome biome) {
EndBiome endBiome = CLIENT.get(biome);
if (endBiome == null) {
MinecraftClient minecraft = MinecraftClient.getInstance();
ResourceLocation id = minecraft.world.registryAccess().get(Registry.BIOME_KEY).getId(biome);
Minecraft minecraft = Minecraft.getInstance();
ResourceLocation id = minecraft.level.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY)
.getKey(biome);
endBiome = id == null ? END : ID_MAP.getOrDefault(id, END);
CLIENT.put(biome, endBiome);
}
@ -415,7 +413,7 @@ public class EndBiomes {
}
public static ResourceLocation getBiomeID(Biome biome) {
ResourceLocation id = biomeRegistry.getId(biome);
ResourceLocation id = biomeRegistry.getKey(biome);
return id == null ? END.getID() : id;
}

View file

@ -400,7 +400,7 @@ public class EndBlocks {
maxCount = item.getStackSize();
placeOnWater = item.canPlaceOnWater();
}
Properties item = EndItems.makeBlockItemSettings().maxCount(maxCount);
Properties item = EndItems.makeBlockItemSettings().stacksTo(maxCount);
if (placeOnWater) {
EndItems.registerBlockItem(id, new LilyPadItem(block, item));
} else {

View file

@ -7,9 +7,9 @@ import com.google.common.collect.Lists;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.gen.GenerationStep;
import net.minecraft.world.gen.feature.ConfiguredFeature;
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
import ru.betterend.BetterEnd;
import ru.betterend.world.biome.BiomeDefinition;
import ru.betterend.world.biome.EndBiome;

View file

@ -5,25 +5,24 @@ import java.util.List;
import com.google.common.collect.Lists;
import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags;
import net.minecraft.core.dispenser.DispenseItemBehavior;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.MobSpawnType;
import net.minecraft.world.food.FoodProperties;
import net.minecraft.world.food.Foods;
import net.minecraft.world.item.*;
import net.minecraft.world.level.block.DispenserBlock;
import net.minecraft.world.level.block.dispenser.ItemDispenserBehavior;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.SpawnReason;
import net.minecraft.world.entity.effect.StatusEffectInstance;
import net.minecraft.world.entity.effect.StatusEffects;
import net.minecraft.fluid.Fluids;
import net.minecraft.world.item.FoodComponent;
import net.minecraft.world.item.FoodComponents;
import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.level.material.Fluids;
import net.minecraft.world.item.Item.Properties;
import net.minecraft.world.item.ToolItem;
import net.minecraft.world.item.ToolMaterials;
import net.minecraft.sound.SoundEvent;
import net.minecraft.world.item.TieredItem;
import net.minecraft.world.item.Tiers;
import net.minecraft.tags.Tag;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Rarity;
import net.minecraft.util.math.BlockPointer;
import net.minecraft.core.Direction;
import net.minecraft.core.Registry;
import ru.betterend.BetterEnd;
@ -94,17 +93,17 @@ public class EndItems {
EndArmorMaterial.CRYSTALITE, EquipmentSlot.FEET, makeItemSettings().rarity(Rarity.UNCOMMON)));
// Tools //
public static final ToolItem AETERNIUM_SHOVEL = registerTool("aeternium_shovel",
public static final TieredItem AETERNIUM_SHOVEL = registerTool("aeternium_shovel",
new EndShovelItem(EndToolMaterial.AETERNIUM, 1.5F, -3.0F, makeItemSettings().fireResistant()));
public static final ToolItem AETERNIUM_SWORD = registerTool("aeternium_sword",
public static final TieredItem AETERNIUM_SWORD = registerTool("aeternium_sword",
new EndSwordItem(EndToolMaterial.AETERNIUM, 3, -2.4F, makeItemSettings().fireResistant()));
public static final ToolItem AETERNIUM_PICKAXE = registerTool("aeternium_pickaxe",
public static final TieredItem AETERNIUM_PICKAXE = registerTool("aeternium_pickaxe",
new EndPickaxeItem(EndToolMaterial.AETERNIUM, 1, -2.8F, makeItemSettings().fireResistant()));
public static final ToolItem AETERNIUM_AXE = registerTool("aeternium_axe",
public static final TieredItem AETERNIUM_AXE = registerTool("aeternium_axe",
new EndAxeItem(EndToolMaterial.AETERNIUM, 5.0F, -3.0F, makeItemSettings().fireResistant()));
public static final ToolItem AETERNIUM_HOE = registerTool("aeternium_hoe",
public static final TieredItem AETERNIUM_HOE = registerTool("aeternium_hoe",
new EndHoeItem(EndToolMaterial.AETERNIUM, -3, 0.0F, makeItemSettings().fireResistant()));
public static final ToolItem AETERNIUM_HAMMER = registerTool("aeternium_hammer",
public static final TieredItem AETERNIUM_HAMMER = registerTool("aeternium_hammer",
new EndHammerItem(EndToolMaterial.AETERNIUM, 6.0F, -3.0F, 0.3D, makeItemSettings().fireResistant()));
// Toolparts //
@ -117,33 +116,31 @@ public class EndItems {
public final static Item AETERNIUM_SWORD_HANDLE = registerItem("aeternium_sword_handle");
// Hammers //
public static final ToolItem IRON_HAMMER = registerTool("iron_hammer",
new EndHammerItem(ToolMaterials.IRON, 5.0F, -3.2F, 0.2D, makeItemSettings()));
public static final ToolItem GOLDEN_HAMMER = registerTool("golden_hammer",
new EndHammerItem(ToolMaterials.GOLD, 4.5F, -3.4F, 0.3D, makeItemSettings()));
public static final ToolItem DIAMOND_HAMMER = registerTool("diamond_hammer",
new EndHammerItem(ToolMaterials.DIAMOND, 5.5F, -3.1F, 0.2D, makeItemSettings()));
public static final ToolItem NETHERITE_HAMMER = registerTool("netherite_hammer",
new EndHammerItem(ToolMaterials.NETHERITE, 5.0F, -3.0F, 0.2D, makeItemSettings().fireResistant()));
public static final TieredItem IRON_HAMMER = registerTool("iron_hammer",
new EndHammerItem(Tiers.IRON, 5.0F, -3.2F, 0.2D, makeItemSettings()));
public static final TieredItem GOLDEN_HAMMER = registerTool("golden_hammer",
new EndHammerItem(Tiers.GOLD, 4.5F, -3.4F, 0.3D, makeItemSettings()));
public static final TieredItem DIAMOND_HAMMER = registerTool("diamond_hammer",
new EndHammerItem(Tiers.DIAMOND, 5.5F, -3.1F, 0.2D, makeItemSettings()));
public static final TieredItem NETHERITE_HAMMER = registerTool("netherite_hammer",
new EndHammerItem(Tiers.NETHERITE, 5.0F, -3.0F, 0.2D, makeItemSettings().fireResistant()));
// 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 END_FISH_RAW = registerFood("end_fish_raw", Foods.SALMON);
public final static Item END_FISH_COOKED = registerFood("end_fish_cooked", Foods.COOKED_SALMON);
public final static Item BUCKET_END_FISH = registerItem("bucket_end_fish",
new FishBucketItem(EndEntities.END_FISH, Fluids.WATER, makeItemSettings().maxCount(1)));
new FishBucketItem(EndEntities.END_FISH, Fluids.WATER, makeItemSettings().stacksTo(1)));
public final static Item SWEET_BERRY_JELLY = registerFood("sweet_berry_jelly", 6, 0.75F);
public final static Item SHADOW_BERRY_JELLY = registerFood("shadow_berry_jelly", 7, 0.75F,
new StatusEffectInstance(StatusEffects.NIGHT_VISION, 400));
public final static Item BLOSSOM_BERRY = registerFood("blossom_berry", FoodComponents.APPLE);
new MobEffectInstance(MobEffects.NIGHT_VISION, 400));
public final static Item BLOSSOM_BERRY = registerFood("blossom_berry", Foods.APPLE);
public final static Item AMBER_ROOT_RAW = registerFood("amber_root_raw", 2, 0.8F);
public final static Item CHORUS_MUSHROOM_RAW = registerFood("chorus_mushroom_raw", 3, 0.5F);
public final static Item CHORUS_MUSHROOM_COOKED = registerFood("chorus_mushroom_cooked",
FoodComponents.MUSHROOM_STEW);
public final static Item BOLUX_MUSHROOM_COOKED = registerFood("bolux_mushroom_cooked",
FoodComponents.MUSHROOM_STEW);
public final static Item CAVE_PUMPKIN_PIE = registerFood("cave_pumpkin_pie", FoodComponents.PUMPKIN_PIE);
public final static Item CHORUS_MUSHROOM_COOKED = registerFood("chorus_mushroom_cooked", Foods.MUSHROOM_STEW);
public final static Item BOLUX_MUSHROOM_COOKED = registerFood("bolux_mushroom_cooked", Foods.MUSHROOM_STEW);
public final static Item CAVE_PUMPKIN_PIE = registerFood("cave_pumpkin_pie", Foods.PUMPKIN_PIE);
// Drinks //
public final static Item UMBRELLA_CLUSTER_JUICE = registerDrink("umbrella_cluster_juice", 5, 0.7F);
@ -191,7 +188,7 @@ public class EndItems {
return item;
}
public static ToolItem registerTool(String name, ToolItem item) {
public static TieredItem registerTool(String name, TieredItem item) {
ResourceLocation id = BetterEnd.makeID(name);
if (!Configs.ITEM_CONFIG.getBoolean("tools", id.getPath(), true)) {
return item;
@ -199,17 +196,17 @@ public class EndItems {
registerItem(id, item, MOD_ITEMS);
if (item instanceof ShovelItem) {
TagHelper.addTag((Tag.Identified<Item>) FabricToolTags.SHOVELS, item);
TagHelper.addTag((Tag.Named<Item>) FabricToolTags.SHOVELS, item);
} else if (item instanceof SwordItem) {
TagHelper.addTag((Tag.Identified<Item>) FabricToolTags.SWORDS, item);
TagHelper.addTag((Tag.Named<Item>) FabricToolTags.SWORDS, item);
} else if (item instanceof EndPickaxeItem) {
TagHelper.addTag((Tag.Identified<Item>) FabricToolTags.PICKAXES, item);
TagHelper.addTag((Tag.Named<Item>) FabricToolTags.PICKAXES, item);
} else if (item instanceof EndAxeItem) {
TagHelper.addTag((Tag.Identified<Item>) FabricToolTags.AXES, item);
TagHelper.addTag((Tag.Named<Item>) FabricToolTags.AXES, item);
} else if (item instanceof EndHoeItem) {
TagHelper.addTag((Tag.Identified<Item>) FabricToolTags.HOES, item);
TagHelper.addTag((Tag.Named<Item>) FabricToolTags.HOES, item);
} else if (item instanceof EndHammerItem) {
TagHelper.addTag((Tag.Identified<Item>) EndTags.HAMMERS, item);
TagHelper.addTag((Tag.Named<Item>) EndTags.HAMMERS, item);
}
return item;
@ -217,42 +214,40 @@ public class EndItems {
public static Item registerEgg(String name, EntityType<?> type, int background, int dots) {
SpawnEggItem item = new EndSpawnEggItem(type, background, dots, makeItemSettings());
ItemDispenserBehavior behavior = new ItemDispenserBehavior() {
public ItemStack dispenseSilently(BlockPointer pointer, ItemStack stack) {
Direction direction = pointer.getBlockState().get(DispenserBlock.FACING);
EntityType<?> entityType = ((SpawnEggItem) stack.getItem()).getEntityType(stack.getTag());
entityType.spawnFromItemStack(pointer.getLevel(), stack, null, pointer.getBlockPos().offset(direction),
SpawnReason.DISPENSER, direction != Direction.UP, false);
stack.decrement(1);
return stack;
}
DispenseItemBehavior behavior = (pointer, stack) -> {
Direction direction = pointer.getBlockState().getValue(DispenserBlock.FACING);
EntityType<?> entityType = ((SpawnEggItem) stack.getItem()).getType(stack.getTag());
entityType.spawn(pointer.getLevel(), stack, null, pointer.getPos().relative(direction),
MobSpawnType.DISPENSER, direction != Direction.UP, false);
stack.shrink(1);
return stack;
};
DispenserBlock.registerBehavior(item, behavior);
return registerItem(name, item);
}
public static Item registerFood(String name, int hunger, float saturation, StatusEffectInstance... effects) {
FoodComponent.Builder builder = new FoodComponent.Builder().hunger(hunger).saturationModifier(saturation);
for (StatusEffectInstance effect : effects) {
builder.statusEffect(effect, 1F);
public static Item registerFood(String name, int hunger, float saturation, MobEffectInstance... effects) {
FoodProperties.Builder builder = new FoodProperties.Builder().nutrition(hunger).saturationMod(saturation);
for (MobEffectInstance effect : effects) {
builder.effect(effect, 1F);
}
return registerFood(name, builder.build());
}
public static Item registerFood(String name, FoodComponent foodComponent) {
public static Item registerFood(String name, FoodProperties foodComponent) {
return registerItem(name, new PatternedItem(makeItemSettings().food(foodComponent)));
}
public static Item registerDrink(String name) {
return registerItem(name, new DrinkItem(makeItemSettings().maxCount(1)));
return registerItem(name, new DrinkItem(makeItemSettings().stacksTo(1)));
}
public static Item registerDrink(String name, FoodComponent foodComponent) {
return registerItem(name, new DrinkItem(makeItemSettings().maxCount(1).food(foodComponent)));
public static Item registerDrink(String name, FoodProperties foodComponent) {
return registerItem(name, new DrinkItem(makeItemSettings().stacksTo(1).food(foodComponent)));
}
public static Item registerDrink(String name, int hunger, float saturation) {
FoodComponent.Builder builder = new FoodComponent.Builder().hunger(hunger).saturationModifier(saturation);
FoodProperties.Builder builder = new FoodProperties.Builder().nutrition(hunger).saturationMod(saturation);
return registerDrink(name, builder.build());
}

View file

@ -1,6 +1,6 @@
package ru.betterend.registry;
import net.minecraft.sound.SoundEvent;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.core.Registry;
import ru.betterend.BetterEnd;

View file

@ -6,9 +6,9 @@ import java.util.function.Supplier;
import net.minecraft.structure.StructurePieceType;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.core.Registry;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.gen.GenerationStep.Feature;
import net.minecraft.world.gen.feature.ConfiguredStructureFeature;
import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature;
import ru.betterend.BetterEnd;
import ru.betterend.world.structures.EndStructureFeature;
import ru.betterend.world.structures.features.EternalPortalStructure;

View file

@ -10,16 +10,16 @@ import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.LeavesBlock;
import net.minecraft.world.level.material.Material;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.FoodComponent;
import net.minecraft.world.food.FoodProperties;
import net.minecraft.world.item.Item;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.ItemTags;
import net.minecraft.tags.Tag;
import net.minecraft.tags.Tag.Identified;
import net.minecraft.tags.Tag.Named;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.core.Registry;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.Biome.Category;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.biome.Biome.Category;
import net.minecraft.world.gen.surfacebuilder.SurfaceConfig;
import ru.betterend.BetterEnd;
import ru.betterend.blocks.EndTerrainBlock;
@ -34,45 +34,45 @@ public class EndTags {
// https://fabricmc.net/wiki/tutorial:tags
// Block Tags
public static final Tag.Identified<Block> BOOKSHELVES = makeCommonBlockTag("bookshelves");
public static final Tag.Identified<Block> GEN_TERRAIN = makeBlockTag("gen_terrain");
public static final Tag.Identified<Block> END_GROUND = makeBlockTag("end_ground");
public static final Tag.Identified<Block> PEDESTALS = makeBlockTag("pedestal");
public static final Tag.Identified<Block> BLOCK_CHEST = makeCommonBlockTag("chest");
public static final Tag.Identified<Block> END_STONES = makeCommonBlockTag("end_stones");
public static final Tag.Identified<Block> DRAGON_IMMUNE = getMCBlockTag("dragon_immune");
public static final Tag.Named<Block> BOOKSHELVES = makeCommonBlockTag("bookshelves");
public static final Tag.Named<Block> GEN_TERRAIN = makeBlockTag("gen_terrain");
public static final Tag.Named<Block> END_GROUND = makeBlockTag("end_ground");
public static final Tag.Named<Block> PEDESTALS = makeBlockTag("pedestal");
public static final Tag.Named<Block> BLOCK_CHEST = makeCommonBlockTag("chest");
public static final Tag.Named<Block> END_STONES = makeCommonBlockTag("end_stones");
public static final Tag.Named<Block> DRAGON_IMMUNE = getMCBlockTag("dragon_immune");
// Item Tags
public static final Tag.Identified<Item> ITEM_CHEST = makeCommonItemTag("chest");
public static final Tag.Identified<Item> IRON_INGOTS = makeCommonItemTag("iron_ingots");
public static final Tag.Identified<Item> FURNACES = makeCommonItemTag("furnaces");
public static final Tag.Named<Item> ITEM_CHEST = makeCommonItemTag("chest");
public static final Tag.Named<Item> IRON_INGOTS = makeCommonItemTag("iron_ingots");
public static final Tag.Named<Item> FURNACES = makeCommonItemTag("furnaces");
public final static Tag<Item> HAMMERS = registerFabricItemTag("hammers");
public static Tag.Identified<Block> makeBlockTag(String name) {
public static Tag.Named<Block> makeBlockTag(String name) {
ResourceLocation id = BetterEnd.makeID(name);
Tag<Block> tag = BlockTags.getTagGroup().getTag(id);
return tag == null ? (Identified<Block>) TagRegistry.block(id) : (Identified<Block>) tag;
}
public static Tag.Identified<Item> makeItemTag(String name) {
public static Tag.Named<Item> makeItemTag(String name) {
ResourceLocation id = BetterEnd.makeID(name);
Tag<Item> tag = ItemTags.getTagGroup().getTag(id);
return tag == null ? (Identified<Item>) TagRegistry.item(id) : (Identified<Item>) tag;
}
public static Tag.Identified<Block> makeCommonBlockTag(String name) {
public static Tag.Named<Block> makeCommonBlockTag(String name) {
ResourceLocation id = new ResourceLocation("c", name);
Tag<Block> tag = BlockTags.getTagGroup().getTag(id);
return tag == null ? (Identified<Block>) TagRegistry.block(id) : (Identified<Block>) tag;
}
public static Tag.Identified<Item> makeCommonItemTag(String name) {
public static Tag.Named<Item> makeCommonItemTag(String name) {
ResourceLocation id = new ResourceLocation("c", name);
Tag<Item> tag = ItemTags.getTagGroup().getTag(id);
return tag == null ? (Identified<Item>) TagRegistry.item(id) : (Identified<Item>) tag;
}
public static Tag.Identified<Block> getMCBlockTag(String name) {
public static Tag.Named<Block> getMCBlockTag(String name) {
ResourceLocation id = new ResourceLocation(name);
Tag<Block> tag = BlockTags.getTagGroup().getTag(id);
return tag == null ? (Identified<Block>) TagRegistry.block(id) : (Identified<Block>) tag;
@ -106,7 +106,7 @@ public class EndTags {
EndItems.getModItems().forEach((item) -> {
if (item.isFood()) {
FoodComponent food = item.getFoodComponent();
FoodProperties food = item.getFoodComponent();
float compost = food.getHunger() * food.getSaturationModifier() * 0.18F;
ComposterBlockAccessor.callRegisterCompostableItem(compost, item);
}
@ -139,7 +139,7 @@ public class EndTags {
public static void addTerrainTags(Registry<Biome> biomeRegistry) {
biomeRegistry.forEach((biome) -> {
if (biome.getCategory() == Category.THEEND) {
SurfaceConfig config = biome.getGenerationSettings().getSurfaceConfig();
SurfaceConfig config = biome.getGenerationSettings().getSurfaceBuilderConfig();
Block under = config.getUnderMaterial().getBlock();
Block surface = config.getTopMaterial().getBlock();
TagHelper.addTag(GEN_TERRAIN, under, surface);