From b53d513decbae95185a84c5952f7e26a640226ec Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 17 Jun 2021 22:16:00 +0300 Subject: [PATCH 01/43] Integration fix --- gradle.properties | 2 +- src/main/java/ru/bclib/api/ModIntegrationAPI.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 6a044b22..bd09ede1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings=6 loader_version=0.11.3 # Mod Properties -mod_version = 0.1.35 +mod_version = 0.1.36 maven_group = ru.bclib archives_base_name = bclib diff --git a/src/main/java/ru/bclib/api/ModIntegrationAPI.java b/src/main/java/ru/bclib/api/ModIntegrationAPI.java index 28b92ae6..43f5d249 100644 --- a/src/main/java/ru/bclib/api/ModIntegrationAPI.java +++ b/src/main/java/ru/bclib/api/ModIntegrationAPI.java @@ -16,7 +16,9 @@ public class ModIntegrationAPI { */ public static ModIntegration register(ModIntegration integration) { INTEGRATIONS.add(integration); - integration.init(); + if (integration.modIsInstalled()) { + integration.init(); + } return integration; } From 42feb6d4b822f55cb5b319c5185fa57191095025 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 17 Jun 2021 22:53:31 +0300 Subject: [PATCH 02/43] Integrations init fix --- gradle.properties | 2 +- .../java/ru/bclib/api/ModIntegrationAPI.java | 14 +++++++++++--- .../mixin/common/EntrypointServerMixin.java | 19 +++++++++++++++++++ src/main/resources/bclib.mixins.common.json | 1 + 4 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 src/main/java/ru/bclib/mixin/common/EntrypointServerMixin.java diff --git a/gradle.properties b/gradle.properties index bd09ede1..e0e3aef0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings=6 loader_version=0.11.3 # Mod Properties -mod_version = 0.1.36 +mod_version = 0.1.37 maven_group = ru.bclib archives_base_name = bclib diff --git a/src/main/java/ru/bclib/api/ModIntegrationAPI.java b/src/main/java/ru/bclib/api/ModIntegrationAPI.java index 43f5d249..eff311dc 100644 --- a/src/main/java/ru/bclib/api/ModIntegrationAPI.java +++ b/src/main/java/ru/bclib/api/ModIntegrationAPI.java @@ -16,9 +16,6 @@ public class ModIntegrationAPI { */ public static ModIntegration register(ModIntegration integration) { INTEGRATIONS.add(integration); - if (integration.modIsInstalled()) { - integration.init(); - } return integration; } @@ -29,4 +26,15 @@ public class ModIntegrationAPI { public static List getIntegrations() { return INTEGRATIONS; } + + /** + * Initialize all integrations, only for internal usage. + */ + public static void registerAll() { + INTEGRATIONS.forEach(integration -> { + if (integration.modIsInstalled()) { + integration.init(); + } + }); + } } diff --git a/src/main/java/ru/bclib/mixin/common/EntrypointServerMixin.java b/src/main/java/ru/bclib/mixin/common/EntrypointServerMixin.java new file mode 100644 index 00000000..fb570e48 --- /dev/null +++ b/src/main/java/ru/bclib/mixin/common/EntrypointServerMixin.java @@ -0,0 +1,19 @@ +package ru.bclib.mixin.common; + +import java.io.File; + +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.CallbackInfo; + +import net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointServer; +import ru.bclib.api.ModIntegrationAPI; + +@Mixin(value = EntrypointServer.class, remap = false) +public class EntrypointServerMixin { + @Inject(method = "start", at = @At(value = "TAIL")) + private static void start(File runDir, Object gameInstance, CallbackInfo info) { + ModIntegrationAPI.registerAll(); + } +} diff --git a/src/main/resources/bclib.mixins.common.json b/src/main/resources/bclib.mixins.common.json index 20e03d8d..b99fbde0 100644 --- a/src/main/resources/bclib.mixins.common.json +++ b/src/main/resources/bclib.mixins.common.json @@ -5,6 +5,7 @@ "compatibilityLevel": "JAVA_8", "mixins": [ "ComposterBlockAccessor", + "EntrypointServerMixin", "PotionBrewingAccessor", "RecipeManagerAccessor", "EnchantmentMenuMixin", From 417156fd5519305085f0ad1cf2b6504a3e8a5c68 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 17 Jun 2021 23:21:28 +0300 Subject: [PATCH 03/43] Integration init fixes --- gradle.properties | 2 +- .../java/ru/bclib/client/BCLibClient.java | 2 ++ .../mixin/common/EntrypointServerMixin.java | 19 ------------------- .../java/ru/bclib/registry/ItemsRegistry.java | 2 +- .../java/ru/bclib/server/BCLibServer.java | 11 +++++++++++ src/main/resources/bclib.mixins.common.json | 1 - src/main/resources/fabric.mod.json | 3 +++ 7 files changed, 18 insertions(+), 22 deletions(-) delete mode 100644 src/main/java/ru/bclib/mixin/common/EntrypointServerMixin.java create mode 100644 src/main/java/ru/bclib/server/BCLibServer.java diff --git a/gradle.properties b/gradle.properties index e0e3aef0..c43bdde4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings=6 loader_version=0.11.3 # Mod Properties -mod_version = 0.1.37 +mod_version = 0.1.38 maven_group = ru.bclib archives_base_name = bclib diff --git a/src/main/java/ru/bclib/client/BCLibClient.java b/src/main/java/ru/bclib/client/BCLibClient.java index 9bbb977c..5b6249d6 100644 --- a/src/main/java/ru/bclib/client/BCLibClient.java +++ b/src/main/java/ru/bclib/client/BCLibClient.java @@ -4,6 +4,7 @@ import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; import net.minecraft.client.renderer.RenderType; import net.minecraft.core.Registry; +import ru.bclib.api.ModIntegrationAPI; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; import ru.bclib.registry.BaseBlockEntityRenders; @@ -11,6 +12,7 @@ import ru.bclib.registry.BaseBlockEntityRenders; public class BCLibClient implements ClientModInitializer { @Override public void onInitializeClient() { + ModIntegrationAPI.registerAll(); BaseBlockEntityRenders.register(); registerRenderLayers(); } diff --git a/src/main/java/ru/bclib/mixin/common/EntrypointServerMixin.java b/src/main/java/ru/bclib/mixin/common/EntrypointServerMixin.java deleted file mode 100644 index fb570e48..00000000 --- a/src/main/java/ru/bclib/mixin/common/EntrypointServerMixin.java +++ /dev/null @@ -1,19 +0,0 @@ -package ru.bclib.mixin.common; - -import java.io.File; - -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.CallbackInfo; - -import net.fabricmc.loader.entrypoint.minecraft.hooks.EntrypointServer; -import ru.bclib.api.ModIntegrationAPI; - -@Mixin(value = EntrypointServer.class, remap = false) -public class EntrypointServerMixin { - @Inject(method = "start", at = @At(value = "TAIL")) - private static void start(File runDir, Object gameInstance, CallbackInfo info) { - ModIntegrationAPI.registerAll(); - } -} diff --git a/src/main/java/ru/bclib/registry/ItemsRegistry.java b/src/main/java/ru/bclib/registry/ItemsRegistry.java index 8d2c6def..57d884bf 100644 --- a/src/main/java/ru/bclib/registry/ItemsRegistry.java +++ b/src/main/java/ru/bclib/registry/ItemsRegistry.java @@ -19,9 +19,9 @@ import net.minecraft.world.item.SpawnEggItem; import net.minecraft.world.item.SwordItem; import net.minecraft.world.item.TieredItem; import net.minecraft.world.level.block.DispenserBlock; +import ru.bclib.items.BaseDiscItem; import ru.bclib.items.BaseDrinkItem; import ru.bclib.items.BaseSpawnEggItem; -import ru.bclib.items.BaseDiscItem; import ru.bclib.items.ModelProviderItem; import ru.bclib.items.tool.BaseAxeItem; import ru.bclib.items.tool.BaseHoeItem; diff --git a/src/main/java/ru/bclib/server/BCLibServer.java b/src/main/java/ru/bclib/server/BCLibServer.java new file mode 100644 index 00000000..2fbc8c0b --- /dev/null +++ b/src/main/java/ru/bclib/server/BCLibServer.java @@ -0,0 +1,11 @@ +package ru.bclib.server; + +import net.fabricmc.api.DedicatedServerModInitializer; +import ru.bclib.api.ModIntegrationAPI; + +public class BCLibServer implements DedicatedServerModInitializer { + @Override + public void onInitializeServer() { + ModIntegrationAPI.registerAll(); + } +} diff --git a/src/main/resources/bclib.mixins.common.json b/src/main/resources/bclib.mixins.common.json index b99fbde0..20e03d8d 100644 --- a/src/main/resources/bclib.mixins.common.json +++ b/src/main/resources/bclib.mixins.common.json @@ -5,7 +5,6 @@ "compatibilityLevel": "JAVA_8", "mixins": [ "ComposterBlockAccessor", - "EntrypointServerMixin", "PotionBrewingAccessor", "RecipeManagerAccessor", "EnchantmentMenuMixin", diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 0cf6dd3d..d4c9f8f1 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -25,6 +25,9 @@ ], "client": [ "ru.bclib.client.BCLibClient" + ], + "server": [ + "ru.bclib.server.BCLibServer" ] }, "mixins": [ From 570e65ca473cb77e170357487e1dc37a65560b8d Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Fri, 18 Jun 2021 12:54:31 +0300 Subject: [PATCH 04/43] Banner --- bclib_banner.png | Bin 0 -> 35646 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bclib_banner.png diff --git a/bclib_banner.png b/bclib_banner.png new file mode 100644 index 0000000000000000000000000000000000000000..a57ca1bf021a0f4eaa3fbbb4328d2ee4a43ad4ef GIT binary patch literal 35646 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 literal 0 HcmV?d00001 From cbc91f45237595ca8d04c0e95881ed027d11b766 Mon Sep 17 00:00:00 2001 From: Aleksey Date: Fri, 18 Jun 2021 15:08:31 +0300 Subject: [PATCH 05/43] Start update --- build.gradle | 10 ++++---- gradle.properties | 8 +++---- gradle/wrapper/gradle-wrapper.properties | 2 +- .../blockentities/BaseSignBlockEntity.java | 6 +++-- .../blockentities/DynamicBlockEntityType.java | 23 +++++++++++++++---- .../java/ru/bclib/blocks/BaseSignBlock.java | 12 +++------- .../render/BaseChestBlockEntityRenderer.java | 2 +- .../render/BaseSignBlockEntityRenderer.java | 2 +- .../java/ru/bclib/items/BaseBucketItem.java | 7 +++--- 9 files changed, 42 insertions(+), 30 deletions(-) diff --git a/build.gradle b/build.gradle index 843c4bb2..0f975a40 100644 --- a/build.gradle +++ b/build.gradle @@ -7,12 +7,12 @@ buildscript { plugins { id 'idea' id 'eclipse' - id 'fabric-loom' version '0.7-SNAPSHOT' + id 'fabric-loom' version '0.8-SNAPSHOT' id 'maven-publish' } -sourceCompatibility = JavaVersion.VERSION_1_8 -targetCompatibility = JavaVersion.VERSION_1_8 +sourceCompatibility = JavaVersion.VERSION_16 +targetCompatibility = JavaVersion.VERSION_16 archivesBaseName = project.archives_base_name version = project.mod_version @@ -20,7 +20,7 @@ group = project.maven_group repositories { maven { url "https://maven.dblsaiko.net/" } - maven { url "http://server.bbkr.space:8081/artifactory/libs-release/" } + maven { url "https://server.bbkr.space:8081/artifactory/libs-release/" } maven { url "https://maven.fabricmc.net/" } maven { url 'https://maven.blamejared.com' } maven { url "https://maven.shedaniel.me/" } @@ -33,7 +33,7 @@ dependencies { modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - useApi "vazkii.patchouli:Patchouli:1.16.4-${project.patchouli_version}" + //useApi "vazkii.patchouli:Patchouli:1.16.4-${project.patchouli_version}" } def useOptional(String dep) { diff --git a/gradle.properties b/gradle.properties index c43bdde4..cf464a7e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,9 +3,9 @@ org.gradle.jvmargs=-Xmx2G # Fabric Properties # check these on https://fabricmc.net/use -minecraft_version=1.16.5 -yarn_mappings=6 -loader_version=0.11.3 +minecraft_version= 1.17 +yarn_mappings= 6 +loader_version= 0.11.6 # Mod Properties mod_version = 0.1.38 @@ -15,4 +15,4 @@ archives_base_name = bclib # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api patchouli_version = 50-FABRIC -fabric_version = 0.32.9+1.16 +fabric_version = 0.35.2+1.17 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 442d9132..69a97150 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/ru/bclib/blockentities/BaseSignBlockEntity.java b/src/main/java/ru/bclib/blockentities/BaseSignBlockEntity.java index 90bf2a21..64a9b75f 100644 --- a/src/main/java/ru/bclib/blockentities/BaseSignBlockEntity.java +++ b/src/main/java/ru/bclib/blockentities/BaseSignBlockEntity.java @@ -1,12 +1,14 @@ package ru.bclib.blockentities; +import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.SignBlockEntity; +import net.minecraft.world.level.block.state.BlockState; import ru.bclib.registry.BaseBlockEntities; public class BaseSignBlockEntity extends SignBlockEntity { - public BaseSignBlockEntity() { - super(); + public BaseSignBlockEntity(BlockPos blockPos, BlockState blockState) { + super(blockPos, blockState); } @Override diff --git a/src/main/java/ru/bclib/blockentities/DynamicBlockEntityType.java b/src/main/java/ru/bclib/blockentities/DynamicBlockEntityType.java index 0b476594..abe9ce94 100644 --- a/src/main/java/ru/bclib/blockentities/DynamicBlockEntityType.java +++ b/src/main/java/ru/bclib/blockentities/DynamicBlockEntityType.java @@ -6,24 +6,39 @@ import java.util.function.Supplier; import com.google.common.collect.Sets; +import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; +import org.jetbrains.annotations.Nullable; public class DynamicBlockEntityType extends BlockEntityType { private final Set validBlocks = Sets.newHashSet(); + private final BlockEntitySupplier factory; - public DynamicBlockEntityType(Supplier supplier) { - super(supplier, Collections.emptySet(), null); + public DynamicBlockEntityType(BlockEntitySupplier supplier) { + super(null, Collections.emptySet(), null); + this.factory = supplier; } @Override - public boolean isValid(Block block) { - return validBlocks.contains(block); + @Nullable public T create(BlockPos blockPos, BlockState blockState) { + return factory.create(blockPos, blockState); + } + + @Override + public boolean isValid(BlockState blockState) { + return validBlocks.contains(blockState.getBlock()); } public void registerBlock(Block block) { validBlocks.add(block); } + + @FunctionalInterface + interface BlockEntitySupplier { + T create(BlockPos blockPos, BlockState blockState); + } } diff --git a/src/main/java/ru/bclib/blocks/BaseSignBlock.java b/src/main/java/ru/bclib/blocks/BaseSignBlock.java index f762f22d..3521f67c 100644 --- a/src/main/java/ru/bclib/blocks/BaseSignBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseSignBlock.java @@ -75,8 +75,8 @@ public class BaseSignBlock extends SignBlock implements BlockModelProvider, ISpe } @Override - public BlockEntity newBlockEntity(BlockGetter world) { - return new BaseSignBlockEntity(); + public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + return new BaseSignBlockEntity(blockPos, blockState); } @Override @@ -85,7 +85,7 @@ public class BaseSignBlock extends SignBlock implements BlockModelProvider, ISpe BaseSignBlockEntity sign = (BaseSignBlockEntity) world.getBlockEntity(pos); if (sign != null) { if (!world.isClientSide) { - sign.setAllowedPlayerEditor((Player) placer); + sign.setAllowedPlayerEditor(placer.getUUID()); ((ServerPlayer) placer).connection.send(new ClientboundOpenSignEditorPacket(pos)); } else { sign.setEditable(true); @@ -166,12 +166,6 @@ public class BaseSignBlock extends SignBlock implements BlockModelProvider, ISpe return Collections.singletonList(new ItemStack(this)); } - @Override - public Fluid takeLiquid(LevelAccessor world, BlockPos pos, BlockState state) { - // TODO Auto-generated method stub - return super.takeLiquid(world, pos, state); - } - @Override public boolean canPlaceLiquid(BlockGetter world, BlockPos pos, BlockState state, Fluid fluid) { // TODO Auto-generated method stub diff --git a/src/main/java/ru/bclib/client/render/BaseChestBlockEntityRenderer.java b/src/main/java/ru/bclib/client/render/BaseChestBlockEntityRenderer.java index 3626e902..81459f8c 100644 --- a/src/main/java/ru/bclib/client/render/BaseChestBlockEntityRenderer.java +++ b/src/main/java/ru/bclib/client/render/BaseChestBlockEntityRenderer.java @@ -34,7 +34,7 @@ import net.minecraft.world.level.block.state.properties.ChestType; import ru.bclib.blockentities.BaseChestBlockEntity; @Environment(EnvType.CLIENT) -public class BaseChestBlockEntityRenderer extends BlockEntityRenderer { +public class BaseChestBlockEntityRenderer implements BlockEntityRenderer { private static final HashMap LAYERS = Maps.newHashMap(); private static final RenderType[] defaultLayer; diff --git a/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java b/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java index 6ef7e419..33697f60 100644 --- a/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java +++ b/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java @@ -29,7 +29,7 @@ import net.minecraft.world.level.block.state.properties.WoodType; import ru.bclib.blockentities.BaseSignBlockEntity; import ru.bclib.blocks.BaseSignBlock; -public class BaseSignBlockEntityRenderer extends BlockEntityRenderer { +public class BaseSignBlockEntityRenderer implements BlockEntityRenderer { private static final HashMap LAYERS = Maps.newHashMap(); private static final RenderType defaultLayer; private final SignModel model = new SignRenderer.SignModel(); diff --git a/src/main/java/ru/bclib/items/BaseBucketItem.java b/src/main/java/ru/bclib/items/BaseBucketItem.java index e33ac83a..fae47053 100644 --- a/src/main/java/ru/bclib/items/BaseBucketItem.java +++ b/src/main/java/ru/bclib/items/BaseBucketItem.java @@ -1,13 +1,14 @@ package ru.bclib.items; import net.fabricmc.fabric.api.item.v1.FabricItemSettings; +import net.minecraft.sounds.SoundEvents; import net.minecraft.world.entity.EntityType; -import net.minecraft.world.item.FishBucketItem; +import net.minecraft.world.item.MobBucketItem; import net.minecraft.world.level.material.Fluids; import ru.bclib.client.models.ItemModelProvider; -public class BaseBucketItem extends FishBucketItem implements ItemModelProvider { +public class BaseBucketItem extends MobBucketItem implements ItemModelProvider { public BaseBucketItem(EntityType type, FabricItemSettings settings) { - super(type, Fluids.WATER, settings.stacksTo(1)); + super(type, Fluids.WATER, SoundEvents.BUCKET_EMPTY_FISH, settings.stacksTo(1)); } } From 849b28f7d3d0a9e747e060a4595c9969c19d8b99 Mon Sep 17 00:00:00 2001 From: Aleksey Date: Fri, 18 Jun 2021 15:38:18 +0300 Subject: [PATCH 06/43] Try to fix NBTStructureFeature... --- .../ru/bclib/world/features/NBTStructureFeature.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/bclib/world/features/NBTStructureFeature.java b/src/main/java/ru/bclib/world/features/NBTStructureFeature.java index 80d94729..598a3078 100644 --- a/src/main/java/ru/bclib/world/features/NBTStructureFeature.java +++ b/src/main/java/ru/bclib/world/features/NBTStructureFeature.java @@ -17,11 +17,13 @@ import net.minecraft.world.level.block.Mirror; import net.minecraft.world.level.block.Rotation; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.ChunkGenerator; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.levelgen.structure.BoundingBox; import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.minecraft.world.level.levelgen.surfacebuilders.SurfaceBuilderConfiguration; +import net.minecraft.world.phys.Vec3; import ru.bclib.api.BiomeAPI; import ru.bclib.api.TagAPI; import ru.bclib.util.BlocksHelper; @@ -76,7 +78,11 @@ public abstract class NBTStructureFeature extends DefaultFeature { } @Override - public boolean place(WorldGenLevel world, ChunkGenerator chunkGenerator, Random random, BlockPos center, NoneFeatureConfiguration featureConfig) { + public boolean place(FeaturePlaceContext context) { + WorldGenLevel world = context.level(); + Random random = context.random(); + BlockPos center = context.origin(); + center = new BlockPos(((center.getX() >> 4) << 4) | 8, 128, ((center.getZ() >> 4) << 4) | 8); center = getGround(world, center); @@ -88,14 +94,14 @@ public abstract class NBTStructureFeature extends DefaultFeature { StructureTemplate structure = getStructure(world, center, random); Rotation rotation = getRotation(world, center, random); Mirror mirror = getMirror(world, center, random); - BlockPos offset = StructureTemplate.transform(structure.getSize(), mirror, rotation, BlockPos.ZERO); + BlockPos offset = StructureTemplate.transform(new BlockPos(structure.getSize()), mirror, rotation, BlockPos.ZERO); center = center.offset(0, getYOffset(structure, world, center, random) + 0.5, 0); BoundingBox bounds = makeBox(center); StructurePlaceSettings placementData = new StructurePlaceSettings().setRotation(rotation).setMirror(mirror).setBoundingBox(bounds); addStructureData(placementData); center = center.offset(-offset.getX() * 0.5, 0, -offset.getZ() * 0.5); - structure.placeInWorldChunk(world, center, placementData, random); + structure.placeInWorld(world, center, placementData, random); TerrainMerge merge = getTerrainMerge(world, center, random); int x1 = center.getX(); From 6e601179c56dbcc0b7383314604570463f046195 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 20 Jun 2021 15:35:43 +0300 Subject: [PATCH 07/43] Fixed biome def --- src/main/java/ru/bclib/world/biomes/BCLBiomeDef.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/bclib/world/biomes/BCLBiomeDef.java b/src/main/java/ru/bclib/world/biomes/BCLBiomeDef.java index 22c75311..143751bf 100644 --- a/src/main/java/ru/bclib/world/biomes/BCLBiomeDef.java +++ b/src/main/java/ru/bclib/world/biomes/BCLBiomeDef.java @@ -29,6 +29,7 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.levelgen.GenerationStep.Carving; import net.minecraft.world.level.levelgen.GenerationStep.Decoration; +import net.minecraft.world.level.levelgen.carver.CarverConfiguration; import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature; @@ -346,7 +347,7 @@ public class BCLBiomeDef { private static final class CarverInfo { Carving carverStep; - ConfiguredWorldCarver carver; + ConfiguredWorldCarver carver; } public ResourceLocation getID() { @@ -365,7 +366,7 @@ public class BCLBiomeDef { return edgeSize; } - public BCLBiomeDef addCarver(Carving carverStep, ConfiguredWorldCarver carver) { + public BCLBiomeDef addCarver(Carving carverStep, ConfiguredWorldCarver carver) { CarverInfo info = new CarverInfo(); info.carverStep = carverStep; info.carver = carver; From 553afd872af2ad2fba1180b06905e2b74453132f Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 20 Jun 2021 16:25:59 +0300 Subject: [PATCH 08/43] Feature update --- .../common/FeatureDecoratorsAccessor.java | 18 +++++++++++++ .../bclib/world/features/BCLDecorators.java | 27 +++++++++++++++++++ .../ru/bclib/world/features/BCLFeature.java | 22 +++++++++------ 3 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 src/main/java/ru/bclib/mixin/common/FeatureDecoratorsAccessor.java create mode 100644 src/main/java/ru/bclib/world/features/BCLDecorators.java diff --git a/src/main/java/ru/bclib/mixin/common/FeatureDecoratorsAccessor.java b/src/main/java/ru/bclib/mixin/common/FeatureDecoratorsAccessor.java new file mode 100644 index 00000000..d54b39cc --- /dev/null +++ b/src/main/java/ru/bclib/mixin/common/FeatureDecoratorsAccessor.java @@ -0,0 +1,18 @@ +package ru.bclib.mixin.common; + +import net.minecraft.data.worldgen.Features; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.block.ComposterBlock; +import net.minecraft.world.level.levelgen.placement.ConfiguredDecorator; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(targets = "net.minecraft.data.worldgen.Features$Decorators") +public interface FeatureDecoratorsAccessor { + @Accessor("HEIGHTMAP_SQUARE") + ConfiguredDecorator bcl_getHeightmapSquare(); +} diff --git a/src/main/java/ru/bclib/world/features/BCLDecorators.java b/src/main/java/ru/bclib/world/features/BCLDecorators.java new file mode 100644 index 00000000..b302b031 --- /dev/null +++ b/src/main/java/ru/bclib/world/features/BCLDecorators.java @@ -0,0 +1,27 @@ +package ru.bclib.world.features; + +import net.minecraft.data.worldgen.Features; +import net.minecraft.world.level.levelgen.placement.ConfiguredDecorator; +import ru.bclib.BCLib; + +import java.lang.reflect.Field; + +public class BCLDecorators { + public static final ConfiguredDecorator HEIGHTMAP_SQUARE; + + private static final ConfiguredDecorator getDecorator(Field[] fields, int index) { + try { + return (ConfiguredDecorator) fields[index].get(null); + } + catch (IllegalAccessException e) { + BCLib.LOGGER.error(e.getLocalizedMessage()); + return null; + } + } + + static { + Class[] classes = Features.class.getDeclaredClasses(); + Field[] fields = classes[1].getDeclaredFields(); // Decorators class + HEIGHTMAP_SQUARE = getDecorator(fields, 27); + } +} diff --git a/src/main/java/ru/bclib/world/features/BCLFeature.java b/src/main/java/ru/bclib/world/features/BCLFeature.java index d8d3483e..2227cddd 100644 --- a/src/main/java/ru/bclib/world/features/BCLFeature.java +++ b/src/main/java/ru/bclib/world/features/BCLFeature.java @@ -4,9 +4,11 @@ import net.minecraft.core.Registry; import net.minecraft.data.BuiltinRegistries; import net.minecraft.data.worldgen.Features; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BlockTags; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraft.world.level.levelgen.VerticalAnchor; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.configurations.CountConfiguration; @@ -17,12 +19,16 @@ import net.minecraft.world.level.levelgen.feature.configurations.RangeDecoratorC import net.minecraft.world.level.levelgen.placement.ChanceDecoratorConfiguration; import net.minecraft.world.level.levelgen.placement.FeatureDecorator; import net.minecraft.world.level.levelgen.structure.templatesystem.BlockMatchTest; +import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest; +import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; +import ru.bclib.api.TagAPI; public class BCLFeature { - private Feature feature; + private static final RuleTest ANY_TERRAIN = new TagMatchTest(TagAPI.GEN_TERRAIN); private ConfiguredFeature featureConfigured; private GenerationStep.Decoration featureStep; - + private Feature feature; + public BCLFeature(Feature feature, ConfiguredFeature configuredFeature, GenerationStep.Decoration featureStep) { this.featureConfigured = configuredFeature; this.featureStep = featureStep; @@ -36,7 +42,7 @@ public class BCLFeature { } public static BCLFeature makeVegetationFeature(ResourceLocation id, Feature feature, int density) { - ConfiguredFeature configured = feature.configured(FeatureConfiguration.NONE).decorated(Features.Decorators.HEIGHTMAP_SQUARE).countRandom(density); + ConfiguredFeature configured = feature.configured(FeatureConfiguration.NONE).decorated(BCLDecorators.HEIGHTMAP_SQUARE).countRandom(density); return new BCLFeature(id, feature, GenerationStep.Decoration.VEGETAL_DECORATION, configured); } @@ -46,17 +52,17 @@ public class BCLFeature { } public static BCLFeature makeLakeFeature(ResourceLocation id, Feature feature, int chance) { - ConfiguredFeature configured = feature.configured(FeatureConfiguration.NONE).decorated(FeatureDecorator.WATER_LAKE.configured(new ChanceDecoratorConfiguration(chance))); + ConfiguredFeature configured = feature.configured(FeatureConfiguration.NONE).decorated(FeatureDecorator.LAVA_LAKE.configured(new ChanceDecoratorConfiguration(chance))); return new BCLFeature(id, feature, GenerationStep.Decoration.LAKES, configured); } public static BCLFeature makeOreFeature(ResourceLocation id, Block blockOre, int veins, int veinSize, int offset, int minY, int maxY) { OreConfiguration featureConfig = new OreConfiguration(new BlockMatchTest(Blocks.END_STONE), blockOre.defaultBlockState(), veinSize); - RangeDecoratorConfiguration rangeDecorator = new RangeDecoratorConfiguration(offset, minY, maxY); + OreConfiguration config = new OreConfiguration(ANY_TERRAIN, blockOre.defaultBlockState(), 33); ConfiguredFeature oreFeature = Feature.ORE.configured(featureConfig) - .decorated(FeatureDecorator.RANGE.configured(rangeDecorator)) - .squared() - .count(veins); + .rangeUniform(VerticalAnchor.absolute(minY), VerticalAnchor.absolute(maxY)) + .squared() + .count(veins); return new BCLFeature(Feature.ORE, Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, id, oreFeature), GenerationStep.Decoration.UNDERGROUND_ORES); } From 508ae317fe29cc44acba7ac3076820c2066addfc Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 20 Jun 2021 16:29:45 +0300 Subject: [PATCH 09/43] Rendering update --- .../mixin/client/BackgroundRendererMixin.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/java/ru/bclib/mixin/client/BackgroundRendererMixin.java b/src/main/java/ru/bclib/mixin/client/BackgroundRendererMixin.java index ca1076be..10495c5a 100644 --- a/src/main/java/ru/bclib/mixin/client/BackgroundRendererMixin.java +++ b/src/main/java/ru/bclib/mixin/client/BackgroundRendererMixin.java @@ -1,5 +1,6 @@ package ru.bclib.mixin.client; +import net.minecraft.world.level.material.FogType; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -41,8 +42,8 @@ public class BackgroundRendererMixin { @Inject(method = "setupColor", at = @At("RETURN")) private static void bcl_onRender(Camera camera, float tickDelta, ClientLevel world, int i, float f, CallbackInfo info) { - FluidState fluidState = camera.getFluidInCamera(); - if (fluidState.isEmpty() && world.dimension().equals(Level.END)) { + FogType fogType = camera.getFluidInCamera(); + if (fogType != FogType.WATER && world.dimension().equals(Level.END)) { Entity entity = camera.getEntity(); boolean skip = false; if (entity instanceof LivingEntity) { @@ -62,10 +63,10 @@ public class BackgroundRendererMixin { } @Inject(method = "setupFog", at = @At("HEAD"), cancellable = true) - private static void bcl_fogDensity(Camera camera, FogRenderer.FogMode fogType, float viewDistance, boolean thickFog, CallbackInfo info) { + private static void bcl_fogDensity(Camera camera, FogRenderer.FogMode fogMode, float viewDistance, boolean thickFog, CallbackInfo info) { Entity entity = camera.getEntity(); - FluidState fluidState = camera.getFluidInCamera(); - if (fluidState.isEmpty()) { + FogType fogType = camera.getFluidInCamera(); + if (fogType != FogType.WATER) { float fog = bcl_getFogDensity(entity.level, entity.getX(), entity.getEyeY(), entity.getZ()); BackgroundInfo.fogDensity = fog; float start = viewDistance * 0.75F / fog; @@ -93,10 +94,8 @@ public class BackgroundRendererMixin { } } - RenderSystem.fogStart(start); - RenderSystem.fogEnd(end); - RenderSystem.fogMode(GlStateManager.FogMode.LINEAR); - RenderSystem.setupNvFogDistance(); + RenderSystem.setShaderFogStart(start); + RenderSystem.setShaderFogEnd(end); info.cancel(); } } From 26860898353c51cc218b0423070ada00174d4ddf Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 20 Jun 2021 17:40:58 +0300 Subject: [PATCH 10/43] Client side render fix --- gradle.properties | 2 +- src/main/java/ru/bclib/client/models/BlockModelProvider.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c43bdde4..5cea0fb1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings=6 loader_version=0.11.3 # Mod Properties -mod_version = 0.1.38 +mod_version = 0.1.39 maven_group = ru.bclib archives_base_name = bclib diff --git a/src/main/java/ru/bclib/client/models/BlockModelProvider.java b/src/main/java/ru/bclib/client/models/BlockModelProvider.java index f4bb00b1..e139a923 100644 --- a/src/main/java/ru/bclib/client/models/BlockModelProvider.java +++ b/src/main/java/ru/bclib/client/models/BlockModelProvider.java @@ -7,6 +7,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.resources.ResourceLocation; @@ -14,17 +16,20 @@ import net.minecraft.world.level.block.state.BlockState; import ru.bclib.BCLib; public interface BlockModelProvider extends ItemModelProvider { + @Environment(EnvType.CLIENT) default @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { Optional pattern = PatternsHelper.createBlockSimple(resourceLocation); return ModelsHelper.fromPattern(pattern); } + @Environment(EnvType.CLIENT) default UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath()); registerBlockModel(stateId, modelId, blockState, modelCache); return ModelsHelper.createBlockSimple(modelId); } + @Environment(EnvType.CLIENT) default void registerBlockModel(ResourceLocation stateId, ResourceLocation modelId, BlockState blockState, Map modelCache) { if (!modelCache.containsKey(modelId)) { BlockModel model = getBlockModel(stateId, blockState); From 425458f0bd3517d360aebe58f3b80f450f3048ca Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 20 Jun 2021 18:13:33 +0300 Subject: [PATCH 11/43] More client side annotations --- gradle.properties | 2 +- src/main/java/ru/bclib/blocks/BaseAnvilBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BaseBarrelBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java | 3 +++ src/main/java/ru/bclib/blocks/BaseButtonBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BaseChainBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BaseChestBlock.java | 4 ++++ src/main/java/ru/bclib/blocks/BaseComposterBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java | 4 ++++ src/main/java/ru/bclib/blocks/BaseDoorBlock.java | 4 ++++ src/main/java/ru/bclib/blocks/BaseFenceBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BaseGateBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BaseLadderBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java | 3 +++ src/main/java/ru/bclib/blocks/BasePathBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java | 8 ++++++-- src/main/java/ru/bclib/blocks/BaseSignBlock.java | 3 +++ src/main/java/ru/bclib/blocks/BaseSlabBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BaseStairsBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BaseTerrainBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BaseWallBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java | 5 +++++ src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java | 4 ++++ src/main/java/ru/bclib/blocks/StalactiteBlock.java | 4 ++++ src/main/java/ru/bclib/blocks/TripleTerrainBlock.java | 5 +++++ .../java/ru/bclib/client/models/ItemModelProvider.java | 3 +++ src/main/java/ru/bclib/items/BaseAnvilItem.java | 2 +- src/main/java/ru/bclib/items/BaseSpawnEggItem.java | 3 +++ src/main/java/ru/bclib/items/ModelProviderItem.java | 3 +++ src/main/java/ru/bclib/items/tool/BaseAxeItem.java | 3 +++ src/main/java/ru/bclib/items/tool/BaseHoeItem.java | 3 +++ src/main/java/ru/bclib/items/tool/BasePickaxeItem.java | 3 +++ src/main/java/ru/bclib/items/tool/BaseShovelItem.java | 3 +++ src/main/java/ru/bclib/items/tool/BaseSwordItem.java | 3 +++ 37 files changed, 151 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index 5cea0fb1..b751ef73 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings=6 loader_version=0.11.3 # Mod Properties -mod_version = 0.1.39 +mod_version = 0.1.40 maven_group = ru.bclib archives_base_name = bclib diff --git a/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java b/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java index 8f4148de..cb17045e 100644 --- a/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java @@ -9,6 +9,8 @@ import org.jetbrains.annotations.Nullable; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; @@ -62,11 +64,13 @@ public abstract class BaseAnvilBlock extends AnvilBlock implements BlockModelPro public abstract Item asItem(); @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation blockId) { return getBlockModel(blockId, defaultBlockState()); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { int destruction = blockState.getValue(DESTRUCTION); String name = blockId.getPath(); @@ -79,6 +83,7 @@ public abstract class BaseAnvilBlock extends AnvilBlock implements BlockModelPro } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { int destruction = blockState.getValue(DESTRUCTION); String modId = stateId.getNamespace(); diff --git a/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java b/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java index 2a2de39d..085a0195 100644 --- a/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java @@ -7,6 +7,8 @@ import java.util.Random; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; @@ -97,11 +99,13 @@ public class BaseBarrelBlock extends BarrelBlock implements BlockModelProvider { } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation blockId) { return getBlockModel(blockId, defaultBlockState()); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { Optional pattern; if (blockState.getValue(OPEN)) { @@ -113,6 +117,7 @@ public class BaseBarrelBlock extends BarrelBlock implements BlockModelProvider { } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { String open = blockState.getValue(OPEN) ? "_open" : ""; ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), diff --git a/src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java b/src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java index 98907016..a1b68b1d 100644 --- a/src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java @@ -6,6 +6,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; @@ -39,6 +41,7 @@ public class BaseBookshelfBlock extends BaseBlock { } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_BOOKSHELF, replacePath(blockId)); return ModelsHelper.fromPattern(pattern); diff --git a/src/main/java/ru/bclib/blocks/BaseButtonBlock.java b/src/main/java/ru/bclib/blocks/BaseButtonBlock.java index 7a0a2143..4d2c5812 100644 --- a/src/main/java/ru/bclib/blocks/BaseButtonBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseButtonBlock.java @@ -7,6 +7,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -38,6 +40,7 @@ public abstract class BaseButtonBlock extends ButtonBlock implements BlockModelP } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation blockId) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); Optional pattern = PatternsHelper.createJson(BasePatterns.ITEM_BUTTON, parentId); @@ -45,6 +48,7 @@ public abstract class BaseButtonBlock extends ButtonBlock implements BlockModelP } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); Optional pattern = blockState.getValue(POWERED) ? @@ -54,6 +58,7 @@ public abstract class BaseButtonBlock extends ButtonBlock implements BlockModelP } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { String powered = blockState.getValue(POWERED) ? "_powered" : ""; ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), diff --git a/src/main/java/ru/bclib/blocks/BaseChainBlock.java b/src/main/java/ru/bclib/blocks/BaseChainBlock.java index 730cb6d6..f8ae7090 100644 --- a/src/main/java/ru/bclib/blocks/BaseChainBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseChainBlock.java @@ -7,6 +7,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; @@ -36,17 +38,20 @@ public class BaseChainBlock extends ChainBlock implements BlockModelProvider, IR } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation blockId) { return ModelsHelper.createItemModel(blockId); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_CHAIN, blockId); return ModelsHelper.fromPattern(pattern); } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { Direction.Axis axis = blockState.getValue(AXIS); ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), diff --git a/src/main/java/ru/bclib/blocks/BaseChestBlock.java b/src/main/java/ru/bclib/blocks/BaseChestBlock.java index 2f8f02b2..46819d5e 100644 --- a/src/main/java/ru/bclib/blocks/BaseChestBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseChestBlock.java @@ -5,6 +5,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.core.Registry; @@ -45,12 +47,14 @@ public class BaseChestBlock extends ChestBlock implements BlockModelProvider { } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation blockId) { Optional pattern = PatternsHelper.createJson(BasePatterns.ITEM_CHEST, blockId); return ModelsHelper.fromPattern(pattern); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); return ModelsHelper.createBlockEmpty(parentId); diff --git a/src/main/java/ru/bclib/blocks/BaseComposterBlock.java b/src/main/java/ru/bclib/blocks/BaseComposterBlock.java index 40fcd847..09861f07 100644 --- a/src/main/java/ru/bclib/blocks/BaseComposterBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseComposterBlock.java @@ -7,6 +7,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; @@ -33,17 +35,20 @@ public class BaseComposterBlock extends ComposterBlock implements BlockModelProv } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return getBlockModel(resourceLocation, defaultBlockState()); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_COMPOSTER, blockId); return ModelsHelper.fromPattern(pattern); } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath()); registerBlockModel(stateId, modelId, blockState, modelCache); diff --git a/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java b/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java index e36b2374..4cd02952 100644 --- a/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java @@ -7,6 +7,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; @@ -31,11 +33,13 @@ public class BaseCraftingTableBlock extends CraftingTableBlock implements BlockM } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return getBlockModel(resourceLocation, defaultBlockState()); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { String blockName = blockId.getPath(); Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_SIDED, new HashMap() { diff --git a/src/main/java/ru/bclib/blocks/BaseDoorBlock.java b/src/main/java/ru/bclib/blocks/BaseDoorBlock.java index afbee637..f8594a4a 100644 --- a/src/main/java/ru/bclib/blocks/BaseDoorBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseDoorBlock.java @@ -7,6 +7,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; @@ -47,6 +49,7 @@ public class BaseDoorBlock extends DoorBlock implements IRenderTyped, BlockModel } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { DoorType doorType = getDoorType(blockState); Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_DOOR_BOTTOM, resourceLocation); @@ -66,6 +69,7 @@ public class BaseDoorBlock extends DoorBlock implements IRenderTyped, BlockModel } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { Direction facing = blockState.getValue(FACING); DoorType doorType = getDoorType(blockState); diff --git a/src/main/java/ru/bclib/blocks/BaseFenceBlock.java b/src/main/java/ru/bclib/blocks/BaseFenceBlock.java index 0948de06..417f50cb 100644 --- a/src/main/java/ru/bclib/blocks/BaseFenceBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseFenceBlock.java @@ -7,6 +7,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; @@ -38,6 +40,7 @@ public class BaseFenceBlock extends FenceBlock implements BlockModelProvider { } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation blockId) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); Optional pattern = PatternsHelper.createJson(BasePatterns.ITEM_FENCE, parentId); @@ -45,6 +48,7 @@ public class BaseFenceBlock extends FenceBlock implements BlockModelProvider { } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); String path = blockId.getPath(); @@ -59,6 +63,7 @@ public class BaseFenceBlock extends FenceBlock implements BlockModelProvider { } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { ResourceLocation postId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath() + "_post"); diff --git a/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java b/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java index 212b9e22..e109062e 100644 --- a/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java @@ -9,6 +9,8 @@ import org.jetbrains.annotations.Nullable; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; @@ -54,6 +56,7 @@ public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { String blockName = blockId.getPath(); Map textures = Maps.newHashMap(); @@ -73,11 +76,13 @@ public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return getBlockModel(resourceLocation, defaultBlockState()); } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { String lit = blockState.getValue(LIT) ? "_lit" : ""; ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), diff --git a/src/main/java/ru/bclib/blocks/BaseGateBlock.java b/src/main/java/ru/bclib/blocks/BaseGateBlock.java index 8e811ce4..b4393ea9 100644 --- a/src/main/java/ru/bclib/blocks/BaseGateBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseGateBlock.java @@ -7,6 +7,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; @@ -36,11 +38,13 @@ public class BaseGateBlock extends FenceGateBlock implements BlockModelProvider } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return getBlockModel(resourceLocation, defaultBlockState()); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { boolean inWall = blockState.getValue(IN_WALL); boolean isOpen = blockState.getValue(OPEN); @@ -57,6 +61,7 @@ public class BaseGateBlock extends FenceGateBlock implements BlockModelProvider } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { boolean inWall = blockState.getValue(IN_WALL); boolean isOpen = blockState.getValue(OPEN); diff --git a/src/main/java/ru/bclib/blocks/BaseLadderBlock.java b/src/main/java/ru/bclib/blocks/BaseLadderBlock.java index af74672c..84a396cd 100644 --- a/src/main/java/ru/bclib/blocks/BaseLadderBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseLadderBlock.java @@ -5,6 +5,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; @@ -142,17 +144,20 @@ public class BaseLadderBlock extends BaseBlockNotFull implements IRenderTyped, B } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation blockId) { return ModelsHelper.createBlockItem(blockId); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_LADDER, blockId); return ModelsHelper.fromPattern(pattern); } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath()); registerBlockModel(stateId, modelId, blockState, modelCache); diff --git a/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java b/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java index 48a3925c..86d5a231 100644 --- a/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java @@ -52,11 +52,13 @@ public class BaseMetalBarsBlock extends IronBarsBlock implements BlockModelProvi } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return ModelsHelper.createBlockItem(resourceLocation); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { ResourceLocation thisId = Registry.BLOCK.getKey(this); String path = blockId.getPath(); @@ -71,6 +73,7 @@ public class BaseMetalBarsBlock extends IronBarsBlock implements BlockModelProvi } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { ResourceLocation postId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath() + "_post"); diff --git a/src/main/java/ru/bclib/blocks/BasePathBlock.java b/src/main/java/ru/bclib/blocks/BasePathBlock.java index 76695951..75060542 100644 --- a/src/main/java/ru/bclib/blocks/BasePathBlock.java +++ b/src/main/java/ru/bclib/blocks/BasePathBlock.java @@ -9,6 +9,8 @@ import org.jetbrains.annotations.Nullable; import com.google.common.collect.Maps; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; @@ -66,11 +68,13 @@ public class BasePathBlock extends BaseBlockNotFull { } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation blockId) { return getBlockModel(blockId, defaultBlockState()); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { String name = blockId.getPath(); ResourceLocation bottomId = Registry.BLOCK.getKey(baseBlock); @@ -85,6 +89,7 @@ public class BasePathBlock extends BaseBlockNotFull { } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath()); registerBlockModel(stateId, modelId, blockState, modelCache); diff --git a/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java b/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java index 6f08b05b..0d6152ca 100644 --- a/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java +++ b/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java @@ -7,6 +7,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; @@ -36,11 +38,13 @@ public class BasePressurePlateBlock extends PressurePlateBlock implements BlockM } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return getBlockModel(resourceLocation, defaultBlockState()); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); Optional pattern; @@ -53,6 +57,7 @@ public class BasePressurePlateBlock extends PressurePlateBlock implements BlockM } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { String state = blockState.getValue(POWERED) ? "_down" : "_up"; ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), diff --git a/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java b/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java index 0a7e72fb..003408ba 100644 --- a/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java @@ -7,6 +7,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; @@ -35,20 +37,22 @@ public class BaseRotatedPillarBlock extends RotatedPillarBlock implements BlockM } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation blockId) { return getBlockModel(blockId, defaultBlockState()); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { Optional pattern = createBlockPattern(blockId); return ModelsHelper.fromPattern(pattern); } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { - ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), - "block/" + stateId.getPath()); + ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath()); registerBlockModel(stateId, modelId, blockState, modelCache); return ModelsHelper.createRotatedModel(modelId, blockState.getValue(AXIS)); } diff --git a/src/main/java/ru/bclib/blocks/BaseSignBlock.java b/src/main/java/ru/bclib/blocks/BaseSignBlock.java index f762f22d..2e6b323a 100644 --- a/src/main/java/ru/bclib/blocks/BaseSignBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseSignBlock.java @@ -5,6 +5,8 @@ import java.util.List; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.core.BlockPos; @@ -146,6 +148,7 @@ public class BaseSignBlock extends SignBlock implements BlockModelProvider, ISpe } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); return ModelsHelper.createBlockEmpty(parentId); diff --git a/src/main/java/ru/bclib/blocks/BaseSlabBlock.java b/src/main/java/ru/bclib/blocks/BaseSlabBlock.java index 357ecd58..43edec66 100644 --- a/src/main/java/ru/bclib/blocks/BaseSlabBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseSlabBlock.java @@ -7,6 +7,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; @@ -38,11 +40,13 @@ public class BaseSlabBlock extends SlabBlock implements BlockModelProvider { } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return getBlockModel(resourceLocation, defaultBlockState()); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_SLAB, parentId); @@ -50,6 +54,7 @@ public class BaseSlabBlock extends SlabBlock implements BlockModelProvider { } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { SlabType type = blockState.getValue(TYPE); ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), diff --git a/src/main/java/ru/bclib/blocks/BaseStairsBlock.java b/src/main/java/ru/bclib/blocks/BaseStairsBlock.java index 49eb833c..ce2571c8 100644 --- a/src/main/java/ru/bclib/blocks/BaseStairsBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseStairsBlock.java @@ -7,6 +7,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; @@ -40,11 +42,13 @@ public class BaseStairsBlock extends StairBlock implements BlockModelProvider { } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return getBlockModel(resourceLocation, defaultBlockState()); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); Optional pattern = Optional.empty(); @@ -65,6 +69,7 @@ public class BaseStairsBlock extends StairBlock implements BlockModelProvider { } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { String state; StairsShape shape = blockState.getValue(SHAPE); diff --git a/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java b/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java index ff79bb93..b11b25f1 100644 --- a/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java @@ -10,6 +10,8 @@ import org.jetbrains.annotations.Nullable; import com.google.common.collect.Maps; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.client.renderer.block.model.BlockModel; @@ -110,11 +112,13 @@ public class BaseTerrainBlock extends BaseBlock { } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation blockId) { return getBlockModel(blockId, defaultBlockState()); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { ResourceLocation baseId = Registry.BLOCK.getKey(baseBlock); String modId = blockId.getNamespace(); @@ -129,6 +133,7 @@ public class BaseTerrainBlock extends BaseBlock { } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath()); registerBlockModel(stateId, modelId, blockState, modelCache); diff --git a/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java b/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java index e89c6d99..49ff777c 100644 --- a/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java @@ -8,6 +8,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; @@ -42,11 +44,13 @@ public class BaseTrapdoorBlock extends TrapDoorBlock implements IRenderTyped, Bl } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return getBlockModel(resourceLocation, defaultBlockState()); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { String name = resourceLocation.getPath(); Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_TRAPDOOR, new HashMap() { @@ -61,6 +65,7 @@ public class BaseTrapdoorBlock extends TrapDoorBlock implements IRenderTyped, Bl } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath()); registerBlockModel(stateId, modelId, blockState, modelCache); diff --git a/src/main/java/ru/bclib/blocks/BaseWallBlock.java b/src/main/java/ru/bclib/blocks/BaseWallBlock.java index a88c82c8..7d232a79 100644 --- a/src/main/java/ru/bclib/blocks/BaseWallBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseWallBlock.java @@ -7,6 +7,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; @@ -39,6 +41,7 @@ public class BaseWallBlock extends WallBlock implements BlockModelProvider { } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation blockId) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); Optional pattern = PatternsHelper.createJson(BasePatterns.ITEM_WALL, parentId); @@ -46,6 +49,7 @@ public class BaseWallBlock extends WallBlock implements BlockModelProvider { } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); String path = blockId.getPath(); @@ -63,6 +67,7 @@ public class BaseWallBlock extends WallBlock implements BlockModelProvider { } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { ResourceLocation postId = new ResourceLocation(stateId.getNamespace(), "block/" + stateId.getPath() + "_post"); diff --git a/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java b/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java index a1616678..744392ca 100644 --- a/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java @@ -7,6 +7,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; @@ -36,11 +38,13 @@ public class BaseWeightedPlateBlock extends WeightedPressurePlateBlock implement } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return getBlockModel(resourceLocation, defaultBlockState()); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); Optional pattern; @@ -53,6 +57,7 @@ public class BaseWeightedPlateBlock extends WeightedPressurePlateBlock implement } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { String state = blockState.getValue(POWER) > 0 ? "_down" : "_up"; ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), diff --git a/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java b/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java index 3bf3fd24..47a6974b 100644 --- a/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java +++ b/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java @@ -7,6 +7,8 @@ import java.util.Random; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.core.BlockPos; @@ -105,11 +107,13 @@ public abstract class FeatureSaplingBlock extends SaplingBlock implements IRende } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return ModelsHelper.createBlockItem(resourceLocation); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_CROSS, resourceLocation); return ModelsHelper.fromPattern(pattern); diff --git a/src/main/java/ru/bclib/blocks/StalactiteBlock.java b/src/main/java/ru/bclib/blocks/StalactiteBlock.java index fa92f326..23add876 100644 --- a/src/main/java/ru/bclib/blocks/StalactiteBlock.java +++ b/src/main/java/ru/bclib/blocks/StalactiteBlock.java @@ -5,6 +5,8 @@ import java.util.Optional; import org.jetbrains.annotations.Nullable; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; @@ -200,12 +202,14 @@ public class StalactiteBlock extends BaseBlockNotFull implements SimpleWaterlogg } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation resourceLocation, BlockState blockState) { Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_CROSS_SHADED, resourceLocation); return ModelsHelper.fromPattern(pattern); } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { BlockModelRotation rotation = blockState.getValue(IS_FLOOR) ? BlockModelRotation.X0_Y0 : BlockModelRotation.X180_Y0; ResourceLocation modelId = new ResourceLocation(stateId.getNamespace(), diff --git a/src/main/java/ru/bclib/blocks/TripleTerrainBlock.java b/src/main/java/ru/bclib/blocks/TripleTerrainBlock.java index 07956146..252ec776 100644 --- a/src/main/java/ru/bclib/blocks/TripleTerrainBlock.java +++ b/src/main/java/ru/bclib/blocks/TripleTerrainBlock.java @@ -10,6 +10,8 @@ import org.jetbrains.annotations.Nullable; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.renderer.block.model.MultiVariant; import net.minecraft.client.renderer.block.model.Variant; @@ -109,11 +111,13 @@ public class TripleTerrainBlock extends BaseTerrainBlock { } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation blockId) { return getBlockModel(blockId, defaultBlockState()); } @Override + @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { String path = blockId.getPath(); Optional pattern; @@ -131,6 +135,7 @@ public class TripleTerrainBlock extends BaseTerrainBlock { } @Override + @Environment(EnvType.CLIENT) public UnbakedModel getModelVariant(ResourceLocation stateId, BlockState blockState, Map modelCache) { boolean isMiddle = isMiddle(blockState); String middle = isMiddle ? "_middle" : ""; diff --git a/src/main/java/ru/bclib/client/models/ItemModelProvider.java b/src/main/java/ru/bclib/client/models/ItemModelProvider.java index 7374bd80..50930e6c 100644 --- a/src/main/java/ru/bclib/client/models/ItemModelProvider.java +++ b/src/main/java/ru/bclib/client/models/ItemModelProvider.java @@ -1,9 +1,12 @@ package ru.bclib.client.models; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; public interface ItemModelProvider { + @Environment(EnvType.CLIENT) default BlockModel getItemModel(ResourceLocation resourceLocation) { return ModelsHelper.createItemModel(resourceLocation); } diff --git a/src/main/java/ru/bclib/items/BaseAnvilItem.java b/src/main/java/ru/bclib/items/BaseAnvilItem.java index a978ddea..d4c51755 100644 --- a/src/main/java/ru/bclib/items/BaseAnvilItem.java +++ b/src/main/java/ru/bclib/items/BaseAnvilItem.java @@ -30,7 +30,6 @@ public class BaseAnvilItem extends BlockItem implements ItemModelProvider { } @Override - @SuppressWarnings("ConstantConditions") protected BlockState getPlacementState(BlockPlaceContext blockPlaceContext) { BlockState blockState = super.getPlacementState(blockPlaceContext); ItemStack stack = blockPlaceContext.getItemInHand(); @@ -50,6 +49,7 @@ public class BaseAnvilItem extends BlockItem implements ItemModelProvider { } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { Block anvilBlock = getBlock(); ResourceLocation blockId = Registry.BLOCK.getKey(anvilBlock); diff --git a/src/main/java/ru/bclib/items/BaseSpawnEggItem.java b/src/main/java/ru/bclib/items/BaseSpawnEggItem.java index fb519f7e..ec7b63f3 100644 --- a/src/main/java/ru/bclib/items/BaseSpawnEggItem.java +++ b/src/main/java/ru/bclib/items/BaseSpawnEggItem.java @@ -2,6 +2,8 @@ package ru.bclib.items; import java.util.Optional; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.EntityType; @@ -17,6 +19,7 @@ public class BaseSpawnEggItem extends SpawnEggItem implements ItemModelProvider } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { Optional pattern = PatternsHelper.createJson(BasePatterns.ITEM_SPAWN_EGG, resourceLocation); return ModelsHelper.fromPattern(pattern); diff --git a/src/main/java/ru/bclib/items/ModelProviderItem.java b/src/main/java/ru/bclib/items/ModelProviderItem.java index 208b8eb7..4fbd6a00 100644 --- a/src/main/java/ru/bclib/items/ModelProviderItem.java +++ b/src/main/java/ru/bclib/items/ModelProviderItem.java @@ -1,5 +1,7 @@ package ru.bclib.items; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; @@ -12,6 +14,7 @@ public class ModelProviderItem extends Item implements ItemModelProvider { } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return ModelsHelper.createItemModel(resourceLocation); } diff --git a/src/main/java/ru/bclib/items/tool/BaseAxeItem.java b/src/main/java/ru/bclib/items/tool/BaseAxeItem.java index e3f5cf55..3836f161 100644 --- a/src/main/java/ru/bclib/items/tool/BaseAxeItem.java +++ b/src/main/java/ru/bclib/items/tool/BaseAxeItem.java @@ -1,5 +1,7 @@ package ru.bclib.items.tool; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.client.renderer.block.model.BlockModel; @@ -28,6 +30,7 @@ public class BaseAxeItem extends AxeItem implements DynamicAttributeTool, ItemMo } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return ModelsHelper.createHandheldItem(resourceLocation); } diff --git a/src/main/java/ru/bclib/items/tool/BaseHoeItem.java b/src/main/java/ru/bclib/items/tool/BaseHoeItem.java index f44a1af8..6e1aeab4 100644 --- a/src/main/java/ru/bclib/items/tool/BaseHoeItem.java +++ b/src/main/java/ru/bclib/items/tool/BaseHoeItem.java @@ -1,5 +1,7 @@ package ru.bclib.items.tool; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.HoeItem; @@ -13,6 +15,7 @@ public class BaseHoeItem extends HoeItem implements ItemModelProvider { } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return ModelsHelper.createHandheldItem(resourceLocation); } diff --git a/src/main/java/ru/bclib/items/tool/BasePickaxeItem.java b/src/main/java/ru/bclib/items/tool/BasePickaxeItem.java index 858bb692..213c530b 100644 --- a/src/main/java/ru/bclib/items/tool/BasePickaxeItem.java +++ b/src/main/java/ru/bclib/items/tool/BasePickaxeItem.java @@ -1,5 +1,7 @@ package ru.bclib.items.tool; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.fabricmc.fabric.impl.tool.attribute.ToolManagerImpl; @@ -36,6 +38,7 @@ public class BasePickaxeItem extends PickaxeItem implements DynamicAttributeTool } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return ModelsHelper.createHandheldItem(resourceLocation); } diff --git a/src/main/java/ru/bclib/items/tool/BaseShovelItem.java b/src/main/java/ru/bclib/items/tool/BaseShovelItem.java index 49ffeff8..1a84ee98 100644 --- a/src/main/java/ru/bclib/items/tool/BaseShovelItem.java +++ b/src/main/java/ru/bclib/items/tool/BaseShovelItem.java @@ -1,5 +1,7 @@ package ru.bclib.items.tool; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.fabricmc.fabric.impl.tool.attribute.ToolManagerImpl; @@ -36,6 +38,7 @@ public class BaseShovelItem extends ShovelItem implements DynamicAttributeTool, } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return ModelsHelper.createHandheldItem(resourceLocation); } diff --git a/src/main/java/ru/bclib/items/tool/BaseSwordItem.java b/src/main/java/ru/bclib/items/tool/BaseSwordItem.java index c5807c12..f78098a3 100644 --- a/src/main/java/ru/bclib/items/tool/BaseSwordItem.java +++ b/src/main/java/ru/bclib/items/tool/BaseSwordItem.java @@ -1,5 +1,7 @@ package ru.bclib.items.tool; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; @@ -14,6 +16,7 @@ public class BaseSwordItem extends SwordItem implements DynamicAttributeTool, It } @Override + @Environment(EnvType.CLIENT) public BlockModel getItemModel(ResourceLocation resourceLocation) { return ModelsHelper.createHandheldItem(resourceLocation); } From e536edfccf7beb4d914ee14ad2884ea224620995 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 20 Jun 2021 18:27:19 +0300 Subject: [PATCH 12/43] Registry client side fix --- gradle.properties | 2 +- src/main/java/ru/bclib/api/BiomeAPI.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index b751ef73..a4c95ffc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings=6 loader_version=0.11.3 # Mod Properties -mod_version = 0.1.40 +mod_version = 0.1.41 maven_group = ru.bclib archives_base_name = bclib diff --git a/src/main/java/ru/bclib/api/BiomeAPI.java b/src/main/java/ru/bclib/api/BiomeAPI.java index f311c862..ef927ef8 100644 --- a/src/main/java/ru/bclib/api/BiomeAPI.java +++ b/src/main/java/ru/bclib/api/BiomeAPI.java @@ -41,7 +41,7 @@ public class BiomeAPI { } public static void registerBiome(BCLBiome biome) { - if (!BuiltinRegistries.BIOME.containsKey(biome.getID())) { + if (BuiltinRegistries.BIOME.get(biome.getID()) == null) { Registry.register(BuiltinRegistries.BIOME, biome.getID(), biome.getBiome()); } ID_MAP.put(biome.getID(), biome); From d3fbb660a72b462b4b5c241d359d8d557cbc663b Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 20 Jun 2021 18:39:48 +0300 Subject: [PATCH 13/43] Color source fix --- src/main/java/ru/bclib/world/biomes/BCLBiomeDef.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/bclib/world/biomes/BCLBiomeDef.java b/src/main/java/ru/bclib/world/biomes/BCLBiomeDef.java index 22c75311..30f77701 100644 --- a/src/main/java/ru/bclib/world/biomes/BCLBiomeDef.java +++ b/src/main/java/ru/bclib/world/biomes/BCLBiomeDef.java @@ -8,7 +8,6 @@ import com.google.common.collect.Maps; import net.minecraft.core.Registry; import net.minecraft.core.particles.ParticleOptions; -import net.minecraft.data.worldgen.biome.Biomes; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.Music; import net.minecraft.sounds.Musics; @@ -43,8 +42,8 @@ import ru.bclib.world.structures.BCLStructureFeature; import ru.bclib.world.surface.DoubleBlockSurfaceBuilder; public class BCLBiomeDef { - public static final int DEF_FOLIAGE_OVERWORLD = Biomes.PLAINS.getFoliageColor(); - public static final int DEF_FOLIAGE_NETHER =ColorUtil.color(117, 10, 10); + public static final int DEF_FOLIAGE_OVERWORLD = ColorUtil.color(110, 143, 64); + public static final int DEF_FOLIAGE_NETHER = ColorUtil.color(117, 10, 10); public static final int DEF_FOLIAGE_END = ColorUtil.color(197, 210, 112); private final List> structures = Lists.newArrayList(); From a37f1275c5c429721fe4b7b5effb7e6cf3e3c1ef Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 20 Jun 2021 18:41:14 +0300 Subject: [PATCH 14/43] Version change --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a4c95ffc..ac1409cb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings=6 loader_version=0.11.3 # Mod Properties -mod_version = 0.1.41 +mod_version = 0.1.42 maven_group = ru.bclib archives_base_name = bclib From 8db49ab4f156ddf7b8f0d34e24f85afa2b048b3d Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Mon, 21 Jun 2021 20:19:57 +0300 Subject: [PATCH 15/43] Fixed null pointer for structures --- .../java/ru/bclib/util/StructureHelper.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/main/java/ru/bclib/util/StructureHelper.java b/src/main/java/ru/bclib/util/StructureHelper.java index cf68aab5..179159e3 100644 --- a/src/main/java/ru/bclib/util/StructureHelper.java +++ b/src/main/java/ru/bclib/util/StructureHelper.java @@ -138,7 +138,8 @@ public class StructureHelper { for (int y = bounds.y1; y >= bounds.y0; y--) { mut.setY(y); BlockState state = world.getBlockState(mut); - if (canDestruct && BlocksHelper.isInvulnerableUnsafe(state) && random.nextInt(8) == 0 && world.isEmptyBlock(mut.below(2))) { + boolean ignore = ignore(state, world, mut); + if (canDestruct && BlocksHelper.isInvulnerable(state, world, mut) && random.nextInt(8) == 0 && world.isEmptyBlock(mut.below(2))) { int r = MHelper.randRange(1, 4, random); int cx = mut.getX(); int cy = mut.getY(); @@ -161,7 +162,7 @@ public class StructureHelper { int dz = pz - cz; dz *= dz; mut.setZ(pz); - if (dx + dy + dz <= r && BlocksHelper.isInvulnerableUnsafe(world.getBlockState(mut))) { + if (dx + dy + dz <= r && BlocksHelper.isInvulnerable(world.getBlockState(mut), world, mut)) { BlocksHelper.setWithoutUpdate(world, mut, Blocks.AIR); } } @@ -173,7 +174,7 @@ public class StructureHelper { canDestruct = false; continue; } - else if (ignore(state)) { + else if (ignore) { continue; } if (!state.isAir() && random.nextBoolean()) { @@ -194,7 +195,7 @@ public class StructureHelper { } break; } - else if (random.nextInt(8) == 0 && !BlocksHelper.isInvulnerableUnsafe(world.getBlockState(mut.above()))) { + else if (random.nextInt(8) == 0 && !BlocksHelper.isInvulnerable(world.getBlockState(mut.above()), world, mut)) { BlocksHelper.setWithoutUpdate(world, mut, Blocks.AIR); } } @@ -208,7 +209,7 @@ public class StructureHelper { for (int y = bounds.y1; y >= bounds.y0; y--) { mut.setY(y); BlockState state = world.getBlockState(mut); - if (!ignore(state) && world.isEmptyBlock(mut.below())) { + if (!ignore(state, world, mut) && world.isEmptyBlock(mut.below())) { BlocksHelper.setWithoutUpdate(world, mut, Blocks.AIR); for (int py = mut.getY(); py >= bounds.y0 - 10; py--) { mut.setY(py - 1); @@ -235,7 +236,7 @@ public class StructureHelper { for (int y = bounds.y1; y >= bounds.y0; y--) { mut.setY(y); BlockState state = world.getBlockState(mut); - if (!ignore(state)) { + if (!ignore(state, world, mut)) { if (random.nextInt(6) == 0) { BlocksHelper.setWithoutUpdate(world, mut, Blocks.AIR); if (random.nextBoolean()) { @@ -285,7 +286,7 @@ public class StructureHelper { for (int y = bounds.y0; y <= bounds.y1; y++) { mut.setY(y); BlockState state = world.getBlockState(mut); - if (!ignore(state) && isTerrainNear(world, mut)) { + if (!ignore(state, world, mut) && isTerrainNear(world, mut)) { edge.add(mut.immutable()); } } @@ -304,7 +305,7 @@ public class StructureHelper { mut.set(center).move(dir); if (bounds.isInside(mut)) { state = world.getBlockState(mut); - if (!ignore(state) && !blocks.contains(mut)) { + if (!ignore(state, world, mut) && !blocks.contains(mut)) { add.add(mut.immutable()); } } @@ -326,7 +327,7 @@ public class StructureHelper { for (int y = bounds.y0; y <= bounds.y1; y++) { mut.setY(y); BlockState state = world.getBlockState(mut); - if (!ignore(state) && !blocks.contains(mut)) { + if (!ignore(state, world, mut) && !blocks.contains(mut)) { BlocksHelper.setWithoutUpdate(world, mut, Blocks.AIR); while (world.getBlockState(mut).getMaterial().isReplaceable() && mut.getY() > minY) { mut.setY(mut.getY() - 1); @@ -341,7 +342,7 @@ public class StructureHelper { } } - private static boolean ignore(BlockState state) { + private static boolean ignore(BlockState state, WorldGenLevel world, BlockPos pos) { return state.getMaterial().isReplaceable() || !state.getFluidState().isEmpty() || state.is(TagAPI.END_GROUND) || @@ -349,7 +350,7 @@ public class StructureHelper { state.is(BlockTags.LEAVES) || state.getMaterial().equals(Material.PLANT) || state.getMaterial().equals(Material.LEAVES) || - BlocksHelper.isInvulnerableUnsafe(state); + BlocksHelper.isInvulnerable(state, world, pos); } public static void cover(WorldGenLevel world, BoundingBox bounds, Random random) { From ce4f3f329d4896df34b175664efdcc98743d7f24 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Mon, 21 Jun 2021 20:21:08 +0300 Subject: [PATCH 16/43] Invulnurable additional fix --- src/main/java/ru/bclib/util/BlocksHelper.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/bclib/util/BlocksHelper.java b/src/main/java/ru/bclib/util/BlocksHelper.java index 78d79a12..21b974f9 100644 --- a/src/main/java/ru/bclib/util/BlocksHelper.java +++ b/src/main/java/ru/bclib/util/BlocksHelper.java @@ -182,6 +182,11 @@ public class BlocksHelper { * @return {@code true} if block is "invulnerable" and {@code false} if not. */ public static boolean isInvulnerableUnsafe(BlockState state) { - return isInvulnerable(state, null, null); + try { + return isInvulnerable(state, null, null); + } + catch (Exception e) { + return false; + } } } From e60f8f7d9da58498afc7559dd6ae7f37d94a320b Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Mon, 21 Jun 2021 21:43:01 +0300 Subject: [PATCH 17/43] Barrel block model fix --- gradle.properties | 2 +- src/main/java/ru/bclib/blocks/BaseBarrelBlock.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index ac1409cb..a316ad08 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings=6 loader_version=0.11.3 # Mod Properties -mod_version = 0.1.42 +mod_version = 0.1.43 maven_group = ru.bclib archives_base_name = bclib diff --git a/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java b/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java index 085a0195..af93693a 100644 --- a/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java @@ -130,8 +130,8 @@ public class BaseBarrelBlock extends BarrelBlock implements BlockModelProvider { case EAST: rotation = BlockModelRotation.X90_Y90; break; case SOUTH: rotation = BlockModelRotation.X90_Y180; break; case WEST: rotation = BlockModelRotation.X90_Y270; break; - case DOWN: - default: rotation = BlockModelRotation.X180_Y0; break; + case DOWN: rotation = BlockModelRotation.X180_Y0; break; + default: break; } return ModelsHelper.createMultiVariant(modelId, rotation.getRotation(), false); } From d7b82c3a17ea109a7187d2c2e51175667af0c345 Mon Sep 17 00:00:00 2001 From: Aleksey Date: Tue, 22 Jun 2021 13:42:26 +0300 Subject: [PATCH 18/43] Update gradle-wrapper.properties --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 69a97150..f371643e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From dccb49f51c4e50b396c98888af41b683e3c91cfd Mon Sep 17 00:00:00 2001 From: Aleksey Date: Tue, 22 Jun 2021 14:04:03 +0300 Subject: [PATCH 19/43] Update gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 66f3a9d2..e1474630 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,4 +15,4 @@ archives_base_name = bclib # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api patchouli_version = 50-FABRIC -fabric_version = 0.35.2+1.17 +fabric_version = 0.36.0+1.17 From 7d7945222073202e75cd2c3c9b545f51956351ae Mon Sep 17 00:00:00 2001 From: Aleksey Date: Tue, 22 Jun 2021 16:05:46 +0300 Subject: [PATCH 20/43] Various fixes --- .../blockentities/BaseBarrelBlockEntity.java | 18 +++++------ .../blockentities/BaseChestBlockEntity.java | 6 ++-- .../blockentities/BaseFurnaceBlockEntity.java | 6 ++-- .../blockentities/DynamicBlockEntityType.java | 1 + .../java/ru/bclib/blocks/BaseAnvilBlock.java | 5 +-- .../ru/bclib/blocks/BaseAttachedBlock.java | 7 ++-- .../java/ru/bclib/blocks/BaseBarrelBlock.java | 5 +-- src/main/java/ru/bclib/blocks/BaseBlock.java | 1 + .../ru/bclib/blocks/BaseBlockWithEntity.java | 6 ++-- .../java/ru/bclib/blocks/BaseButtonBlock.java | 1 + .../java/ru/bclib/blocks/BaseChainBlock.java | 5 +-- .../java/ru/bclib/blocks/BaseChestBlock.java | 9 +++--- .../ru/bclib/blocks/BaseComposterBlock.java | 3 +- .../bclib/blocks/BaseCraftingTableBlock.java | 1 + .../java/ru/bclib/blocks/BaseCropBlock.java | 3 +- .../java/ru/bclib/blocks/BaseDoorBlock.java | 1 + .../ru/bclib/blocks/BaseDoublePlantBlock.java | 3 +- .../java/ru/bclib/blocks/BaseFenceBlock.java | 1 + .../ru/bclib/blocks/BaseFurnaceBlock.java | 7 ++-- .../java/ru/bclib/blocks/BaseGateBlock.java | 1 + .../java/ru/bclib/blocks/BaseLadderBlock.java | 20 ++++++------ .../java/ru/bclib/blocks/BaseLeavesBlock.java | 9 +++--- .../ru/bclib/blocks/BaseMetalBarsBlock.java | 3 +- .../java/ru/bclib/blocks/BaseOreBlock.java | 11 ++----- .../java/ru/bclib/blocks/BasePlantBlock.java | 3 +- .../bclib/blocks/BasePlantWithAgeBlock.java | 3 +- .../bclib/blocks/BasePressurePlateBlock.java | 1 + .../bclib/blocks/BaseRotatedPillarBlock.java | 3 +- .../java/ru/bclib/blocks/BaseSignBlock.java | 1 + .../java/ru/bclib/blocks/BaseSlabBlock.java | 1 + .../java/ru/bclib/blocks/BaseStairsBlock.java | 1 + .../bclib/blocks/BaseStripableLogBlock.java | 5 +-- .../ru/bclib/blocks/BaseTerrainBlock.java | 2 +- .../ru/bclib/blocks/BaseTrapdoorBlock.java | 1 + .../blocks/BaseUnderwaterWallPlantBlock.java | 1 + .../java/ru/bclib/blocks/BaseVineBlock.java | 3 +- .../java/ru/bclib/blocks/BaseWallBlock.java | 1 + .../ru/bclib/blocks/BaseWallPlantBlock.java | 2 ++ .../bclib/blocks/BaseWeightedPlateBlock.java | 1 + .../ru/bclib/blocks/FeatureSaplingBlock.java | 2 ++ .../ru/bclib/blocks/SimpleLeavesBlock.java | 4 +-- .../java/ru/bclib/blocks/StalactiteBlock.java | 1 + .../ru/bclib/blocks/StripableBarkBlock.java | 5 +-- .../ru/bclib/blocks/UnderwaterPlantBlock.java | 3 +- .../blocks/UnderwaterPlantWithAgeBlock.java | 1 + .../ru/bclib/blocks/UpDownPlantBlock.java | 3 +- .../render/BaseChestBlockEntityRenderer.java | 32 +++++++------------ .../java/ru/bclib/items/BaseDrinkItem.java | 7 ++-- .../java/ru/bclib/items/BaseSpawnEggItem.java | 3 +- .../ru/bclib/registry/BaseBlockEntities.java | 3 +- .../java/ru/bclib/registry/ItemsRegistry.java | 3 +- .../world/structures/StructureWorld.java | 2 +- 52 files changed, 130 insertions(+), 101 deletions(-) diff --git a/src/main/java/ru/bclib/blockentities/BaseBarrelBlockEntity.java b/src/main/java/ru/bclib/blockentities/BaseBarrelBlockEntity.java index 488a86eb..c181a7a7 100644 --- a/src/main/java/ru/bclib/blockentities/BaseBarrelBlockEntity.java +++ b/src/main/java/ru/bclib/blockentities/BaseBarrelBlockEntity.java @@ -1,5 +1,6 @@ package ru.bclib.blockentities; +import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; @@ -26,13 +27,13 @@ public class BaseBarrelBlockEntity extends RandomizableContainerBlockEntity { private NonNullList inventory; private int viewerCount; - private BaseBarrelBlockEntity(BlockEntityType type) { - super(type); + private BaseBarrelBlockEntity(BlockEntityType type, BlockPos blockPos, BlockState blockState) { + super(type, blockPos, blockState); this.inventory = NonNullList.withSize(27, ItemStack.EMPTY); } - public BaseBarrelBlockEntity() { - this(BaseBlockEntities.BARREL); + public BaseBarrelBlockEntity(BlockPos blockPos, BlockState blockState) { + this(BaseBlockEntities.BARREL, blockPos, blockState); } public CompoundTag save(CompoundTag tag) { @@ -44,8 +45,8 @@ public class BaseBarrelBlockEntity extends RandomizableContainerBlockEntity { return tag; } - public void load(BlockState state, CompoundTag tag) { - super.load(state, tag); + public void load(CompoundTag tag) { + super.load(tag); this.inventory = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY); if (!this.tryLoadLootTable(tag)) { ContainerHelper.loadAllItems(tag, this.inventory); @@ -97,10 +98,7 @@ public class BaseBarrelBlockEntity extends RandomizableContainerBlockEntity { public void tick() { if (level != null) { - int x = worldPosition.getX(); - int y = worldPosition.getY(); - int z = worldPosition.getZ(); - viewerCount = ChestBlockEntity.getOpenCount(level, this, x, y, z); + viewerCount = ChestBlockEntity.getOpenCount(level, worldPosition); if (viewerCount > 0) { scheduleUpdate(); } else { diff --git a/src/main/java/ru/bclib/blockentities/BaseChestBlockEntity.java b/src/main/java/ru/bclib/blockentities/BaseChestBlockEntity.java index 2d1ed5d4..97581739 100644 --- a/src/main/java/ru/bclib/blockentities/BaseChestBlockEntity.java +++ b/src/main/java/ru/bclib/blockentities/BaseChestBlockEntity.java @@ -1,10 +1,12 @@ package ru.bclib.blockentities; +import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.ChestBlockEntity; +import net.minecraft.world.level.block.state.BlockState; import ru.bclib.registry.BaseBlockEntities; public class BaseChestBlockEntity extends ChestBlockEntity { - public BaseChestBlockEntity() { - super(BaseBlockEntities.CHEST); + public BaseChestBlockEntity(BlockPos blockPos, BlockState blockState) { + super(BaseBlockEntities.CHEST, blockPos, blockState); } } diff --git a/src/main/java/ru/bclib/blockentities/BaseFurnaceBlockEntity.java b/src/main/java/ru/bclib/blockentities/BaseFurnaceBlockEntity.java index 7413bd7c..fa681007 100644 --- a/src/main/java/ru/bclib/blockentities/BaseFurnaceBlockEntity.java +++ b/src/main/java/ru/bclib/blockentities/BaseFurnaceBlockEntity.java @@ -1,5 +1,6 @@ package ru.bclib.blockentities; +import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.player.Inventory; @@ -7,11 +8,12 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.FurnaceMenu; import net.minecraft.world.item.crafting.RecipeType; import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; +import net.minecraft.world.level.block.state.BlockState; import ru.bclib.registry.BaseBlockEntities; public class BaseFurnaceBlockEntity extends AbstractFurnaceBlockEntity { - public BaseFurnaceBlockEntity() { - super(BaseBlockEntities.FURNACE, RecipeType.SMELTING); + public BaseFurnaceBlockEntity(BlockPos blockPos, BlockState blockState) { + super(BaseBlockEntities.FURNACE, blockPos, blockState, RecipeType.SMELTING); } protected Component getDefaultName() { diff --git a/src/main/java/ru/bclib/blockentities/DynamicBlockEntityType.java b/src/main/java/ru/bclib/blockentities/DynamicBlockEntityType.java index abe9ce94..2f992c86 100644 --- a/src/main/java/ru/bclib/blockentities/DynamicBlockEntityType.java +++ b/src/main/java/ru/bclib/blockentities/DynamicBlockEntityType.java @@ -38,6 +38,7 @@ public class DynamicBlockEntityType extends BlockEntityTy } @FunctionalInterface + public interface BlockEntitySupplier { T create(BlockPos blockPos, BlockState blockState); } diff --git a/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java b/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java index cb17045e..5dafc0d5 100644 --- a/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java @@ -35,7 +35,7 @@ public abstract class BaseAnvilBlock extends AnvilBlock implements BlockModelPro public static final IntegerProperty DESTRUCTION = BlockProperties.DESTRUCTION; public BaseAnvilBlock(MaterialColor color) { - super(FabricBlockSettings.copyOf(Blocks.ANVIL).materialColor(color)); + super(FabricBlockSettings.copyOf(Blocks.ANVIL).mapColor(color)); } @Override @@ -43,8 +43,9 @@ public abstract class BaseAnvilBlock extends AnvilBlock implements BlockModelPro super.createBlockStateDefinition(builder); builder.add(DESTRUCTION); } - + @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { ItemStack dropStack = new ItemStack(this); int destruction = state.getValue(DESTRUCTION); diff --git a/src/main/java/ru/bclib/blocks/BaseAttachedBlock.java b/src/main/java/ru/bclib/blocks/BaseAttachedBlock.java index 9d021fd0..ecf12d48 100644 --- a/src/main/java/ru/bclib/blocks/BaseAttachedBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseAttachedBlock.java @@ -16,12 +16,13 @@ import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.DirectionProperty; import ru.bclib.util.BlocksHelper; +@SuppressWarnings("deprecation") public abstract class BaseAttachedBlock extends BaseBlockNotFull { public static final DirectionProperty FACING = BlockStateProperties.FACING; public BaseAttachedBlock(Properties settings) { super(settings); - this.registerDefaultState(this.defaultBlockState().setValue(FACING, Direction.UP)); + registerDefaultState(defaultBlockState().setValue(FACING, Direction.UP)); } @Override @@ -31,7 +32,7 @@ public abstract class BaseAttachedBlock extends BaseBlockNotFull { @Override public BlockState getStateForPlacement(BlockPlaceContext ctx) { - BlockState blockState = this.defaultBlockState(); + BlockState blockState = defaultBlockState(); LevelReader worldView = ctx.getLevel(); BlockPos blockPos = ctx.getClickedPos(); Direction[] directions = ctx.getNearestLookingDirections(); @@ -47,7 +48,7 @@ public abstract class BaseAttachedBlock extends BaseBlockNotFull { @Override public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { - Direction direction = (Direction) state.getValue(FACING); + Direction direction = state.getValue(FACING); BlockPos blockPos = pos.relative(direction.getOpposite()); return canSupportCenter(world, blockPos, direction) || world.getBlockState(blockPos).is(BlockTags.LEAVES); } diff --git a/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java b/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java index af93693a..b36f8843 100644 --- a/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java @@ -46,11 +46,12 @@ public class BaseBarrelBlock extends BarrelBlock implements BlockModelProvider { } @Override - public BlockEntity newBlockEntity(BlockGetter world) { - return BaseBlockEntities.BARREL.create(); + public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + return BaseBlockEntities.BARREL.create(blockPos, blockState); } @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { List drop = super.getDrops(state, builder); drop.add(new ItemStack(this.asItem())); diff --git a/src/main/java/ru/bclib/blocks/BaseBlock.java b/src/main/java/ru/bclib/blocks/BaseBlock.java index 274261a5..97878a79 100644 --- a/src/main/java/ru/bclib/blocks/BaseBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseBlock.java @@ -17,6 +17,7 @@ public class BaseBlock extends Block implements BlockModelProvider { } @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this)); } diff --git a/src/main/java/ru/bclib/blocks/BaseBlockWithEntity.java b/src/main/java/ru/bclib/blocks/BaseBlockWithEntity.java index fa731e03..718a58f7 100644 --- a/src/main/java/ru/bclib/blocks/BaseBlockWithEntity.java +++ b/src/main/java/ru/bclib/blocks/BaseBlockWithEntity.java @@ -3,6 +3,7 @@ package ru.bclib.blocks; import java.util.Collections; import java.util.List; +import net.minecraft.core.BlockPos; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.BaseEntityBlock; @@ -16,11 +17,12 @@ public class BaseBlockWithEntity extends BaseEntityBlock { } @Override - public BlockEntity newBlockEntity(BlockGetter world) { + public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { return null; } - + @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this)); } diff --git a/src/main/java/ru/bclib/blocks/BaseButtonBlock.java b/src/main/java/ru/bclib/blocks/BaseButtonBlock.java index 4d2c5812..5f8642ce 100644 --- a/src/main/java/ru/bclib/blocks/BaseButtonBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseButtonBlock.java @@ -35,6 +35,7 @@ public abstract class BaseButtonBlock extends ButtonBlock implements BlockModelP } @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this)); } diff --git a/src/main/java/ru/bclib/blocks/BaseChainBlock.java b/src/main/java/ru/bclib/blocks/BaseChainBlock.java index f8ae7090..c2a14fe3 100644 --- a/src/main/java/ru/bclib/blocks/BaseChainBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseChainBlock.java @@ -29,10 +29,11 @@ import ru.bclib.interfaces.IRenderTyped; public class BaseChainBlock extends ChainBlock implements BlockModelProvider, IRenderTyped { public BaseChainBlock(MaterialColor color) { - super(FabricBlockSettings.copyOf(Blocks.CHAIN).materialColor(color)); + super(FabricBlockSettings.copyOf(Blocks.CHAIN).mapColor(color)); } - + @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this)); } diff --git a/src/main/java/ru/bclib/blocks/BaseChestBlock.java b/src/main/java/ru/bclib/blocks/BaseChestBlock.java index 46819d5e..2b89b5d2 100644 --- a/src/main/java/ru/bclib/blocks/BaseChestBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseChestBlock.java @@ -3,6 +3,7 @@ package ru.bclib.blocks; import java.util.List; import java.util.Optional; +import net.minecraft.core.BlockPos; import org.jetbrains.annotations.Nullable; import net.fabricmc.api.EnvType; @@ -33,12 +34,12 @@ public class BaseChestBlock extends ChestBlock implements BlockModelProvider { } @Override - public BlockEntity newBlockEntity(BlockGetter world) - { - return BaseBlockEntities.CHEST.create(); + public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + return BaseBlockEntities.CHEST.create(blockPos, blockState); } - + @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { List drop = super.getDrops(state, builder); diff --git a/src/main/java/ru/bclib/blocks/BaseComposterBlock.java b/src/main/java/ru/bclib/blocks/BaseComposterBlock.java index 09861f07..faecc6e5 100644 --- a/src/main/java/ru/bclib/blocks/BaseComposterBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseComposterBlock.java @@ -28,8 +28,9 @@ public class BaseComposterBlock extends ComposterBlock implements BlockModelProv public BaseComposterBlock(Block source) { super(FabricBlockSettings.copyOf(source)); } - + @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this.asItem())); } diff --git a/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java b/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java index 4cd02952..570758fe 100644 --- a/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java @@ -28,6 +28,7 @@ public class BaseCraftingTableBlock extends CraftingTableBlock implements BlockM } @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this.asItem())); } diff --git a/src/main/java/ru/bclib/blocks/BaseCropBlock.java b/src/main/java/ru/bclib/blocks/BaseCropBlock.java index 703ffaab..e395d338 100644 --- a/src/main/java/ru/bclib/blocks/BaseCropBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseCropBlock.java @@ -106,8 +106,9 @@ public class BaseCropBlock extends BasePlantBlock { public boolean isBonemealSuccess(Level world, Random random, BlockPos pos, BlockState state) { return state.getValue(AGE) < 3; } - + @Override + @SuppressWarnings("deprecation") public void tick(BlockState state, ServerLevel world, BlockPos pos, Random random) { super.tick(state, world, pos, random); if (isBonemealSuccess(world, random, pos, state) && random.nextInt(8) == 0) { diff --git a/src/main/java/ru/bclib/blocks/BaseDoorBlock.java b/src/main/java/ru/bclib/blocks/BaseDoorBlock.java index f8594a4a..1c2c6245 100644 --- a/src/main/java/ru/bclib/blocks/BaseDoorBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseDoorBlock.java @@ -36,6 +36,7 @@ public class BaseDoorBlock extends DoorBlock implements IRenderTyped, BlockModel } @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { if (state.getValue(HALF) == DoubleBlockHalf.LOWER) return Collections.singletonList(new ItemStack(this.asItem())); diff --git a/src/main/java/ru/bclib/blocks/BaseDoublePlantBlock.java b/src/main/java/ru/bclib/blocks/BaseDoublePlantBlock.java index 90ec93a2..73f0ed6c 100644 --- a/src/main/java/ru/bclib/blocks/BaseDoublePlantBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseDoublePlantBlock.java @@ -38,6 +38,7 @@ import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; import ru.bclib.util.BlocksHelper; +@SuppressWarnings("deprecation") public abstract class BaseDoublePlantBlock extends BaseBlockNotFull implements IRenderTyped, BonemealableBlock { private static final VoxelShape SHAPE = Block.box(4, 2, 4, 12, 16, 12); public static final IntegerProperty ROTATION = BlockProperties.ROTATION; @@ -110,7 +111,7 @@ public abstract class BaseDoublePlantBlock extends BaseBlockNotFull implements I } ItemStack tool = builder.getParameter(LootContextParams.TOOL); - if (tool != null && tool.getItem().is(FabricToolTags.SHEARS) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { + if (tool != null && FabricToolTags.SHEARS.contains(tool.getItem()) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { return Lists.newArrayList(new ItemStack(this)); } else { diff --git a/src/main/java/ru/bclib/blocks/BaseFenceBlock.java b/src/main/java/ru/bclib/blocks/BaseFenceBlock.java index 417f50cb..85adff6e 100644 --- a/src/main/java/ru/bclib/blocks/BaseFenceBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseFenceBlock.java @@ -35,6 +35,7 @@ public class BaseFenceBlock extends FenceBlock implements BlockModelProvider { } @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this)); } diff --git a/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java b/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java index e109062e..2b93d9a7 100644 --- a/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java @@ -42,8 +42,8 @@ public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider } @Override - public BlockEntity newBlockEntity(BlockGetter world) { - return new BaseFurnaceBlockEntity(); + public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + return new BaseFurnaceBlockEntity(blockPos, blockState); } @Override @@ -95,8 +95,9 @@ public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider public BCLRenderLayer getRenderLayer() { return BCLRenderLayer.CUTOUT; } - + @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { List drop = Lists.newArrayList(new ItemStack(this)); BlockEntity blockEntity = builder.getOptionalParameter(LootContextParams.BLOCK_ENTITY); diff --git a/src/main/java/ru/bclib/blocks/BaseGateBlock.java b/src/main/java/ru/bclib/blocks/BaseGateBlock.java index b4393ea9..d765ca2d 100644 --- a/src/main/java/ru/bclib/blocks/BaseGateBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseGateBlock.java @@ -33,6 +33,7 @@ public class BaseGateBlock extends FenceGateBlock implements BlockModelProvider } @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this)); } diff --git a/src/main/java/ru/bclib/blocks/BaseLadderBlock.java b/src/main/java/ru/bclib/blocks/BaseLadderBlock.java index 84a396cd..93939d8f 100644 --- a/src/main/java/ru/bclib/blocks/BaseLadderBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseLadderBlock.java @@ -39,6 +39,7 @@ import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; import ru.bclib.util.BlocksHelper; +@SuppressWarnings("deprecation") public class BaseLadderBlock extends BaseBlockNotFull implements IRenderTyped, BlockModelProvider { public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; @@ -57,17 +58,14 @@ public class BaseLadderBlock extends BaseBlockNotFull implements IRenderTyped, B stateManager.add(WATERLOGGED); } + @Override public VoxelShape getShape(BlockState state, BlockGetter view, BlockPos pos, CollisionContext ePos) { - switch (state.getValue(FACING)) { - case SOUTH: - return SOUTH_SHAPE; - case WEST: - return WEST_SHAPE; - case EAST: - return EAST_SHAPE; - default: - return NORTH_SHAPE; - } + return switch (state.getValue(FACING)) { + case SOUTH -> SOUTH_SHAPE; + case WEST -> WEST_SHAPE; + case EAST -> EAST_SHAPE; + default -> NORTH_SHAPE; + }; } private boolean canPlaceOn(BlockGetter world, BlockPos pos, Direction side) { @@ -78,7 +76,7 @@ public class BaseLadderBlock extends BaseBlockNotFull implements IRenderTyped, B @Override public boolean canSurvive(BlockState state, LevelReader world, BlockPos pos) { Direction direction = state.getValue(FACING); - return this.canPlaceOn(world, pos.relative(direction.getOpposite()), direction); + return canPlaceOn(world, pos.relative(direction.getOpposite()), direction); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java b/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java index d7a7b1cb..4e644f8e 100644 --- a/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java @@ -29,7 +29,7 @@ public class BaseLeavesBlock extends LeavesBlock implements BlockModelProvider, public BaseLeavesBlock(Block sapling, MaterialColor color) { super(FabricBlockSettings.copyOf(Blocks.OAK_LEAVES) - .materialColor(color) + .mapColor(color) .breakByTool(FabricToolTags.HOES) .breakByTool(FabricToolTags.SHEARS) .breakByHand(true) @@ -41,7 +41,7 @@ public class BaseLeavesBlock extends LeavesBlock implements BlockModelProvider, public BaseLeavesBlock(Block sapling, MaterialColor color, int light) { super(FabricBlockSettings.copyOf(Blocks.OAK_LEAVES) - .materialColor(color) + .mapColor(color) .luminance(light) .breakByTool(FabricToolTags.HOES) .breakByTool(FabricToolTags.SHEARS) @@ -55,12 +55,13 @@ public class BaseLeavesBlock extends LeavesBlock implements BlockModelProvider, public BCLRenderLayer getRenderLayer() { return BCLRenderLayer.CUTOUT; } - + @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { ItemStack tool = builder.getParameter(LootContextParams.TOOL); if (tool != null) { - if (tool.getItem().is(FabricToolTags.SHEARS) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { + if (FabricToolTags.SHEARS.contains(tool.getItem()) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { return Collections.singletonList(new ItemStack(this)); } int fortune = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.BLOCK_FORTUNE, tool); diff --git a/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java b/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java index 86d5a231..d4ecb9bf 100644 --- a/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java @@ -34,6 +34,7 @@ public class BaseMetalBarsBlock extends IronBarsBlock implements BlockModelProvi } @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this)); } @@ -99,7 +100,7 @@ public class BaseMetalBarsBlock extends IronBarsBlock implements BlockModelProvi @Environment(EnvType.CLIENT) public boolean skipRendering(BlockState state, BlockState stateFrom, Direction direction) { - if (direction.getAxis().isVertical() && stateFrom.getBlock().is(this) && !stateFrom.equals(state)) { + if (direction.getAxis().isVertical() && stateFrom.getBlock() == this && !stateFrom.equals(state)) { return false; } return super.skipRendering(state, stateFrom, direction); diff --git a/src/main/java/ru/bclib/blocks/BaseOreBlock.java b/src/main/java/ru/bclib/blocks/BaseOreBlock.java index 5d5cc847..9f0bfaf2 100644 --- a/src/main/java/ru/bclib/blocks/BaseOreBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseOreBlock.java @@ -8,6 +8,7 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; +import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.EnchantmentHelper; @@ -26,26 +27,20 @@ public class BaseOreBlock extends OreBlock implements BlockModelProvider { private final Item dropItem; private final int minCount; private final int maxCount; - private final int experience; public BaseOreBlock(Item drop, int minCount, int maxCount, int experience) { super(FabricBlockSettings.of(Material.STONE, MaterialColor.SAND) .hardness(3F) .resistance(9F) .requiresCorrectToolForDrops() - .sound(SoundType.STONE)); + .sound(SoundType.STONE), UniformInt.of(1, experience)); this.dropItem = drop; this.minCount = minCount; this.maxCount = maxCount; - this.experience = experience; - } - - @Override - protected int xpOnDrop(Random random) { - return this.experience > 0 ? random.nextInt(experience) + 1 : 0; } @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { ItemStack tool = builder.getParameter(LootContextParams.TOOL); if (tool != null && tool.isCorrectToolForDrops(state)) { diff --git a/src/main/java/ru/bclib/blocks/BasePlantBlock.java b/src/main/java/ru/bclib/blocks/BasePlantBlock.java index 2d83be66..b3181e9d 100644 --- a/src/main/java/ru/bclib/blocks/BasePlantBlock.java +++ b/src/main/java/ru/bclib/blocks/BasePlantBlock.java @@ -33,6 +33,7 @@ import net.minecraft.world.phys.shapes.VoxelShape; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; +@SuppressWarnings("deprecation") public abstract class BasePlantBlock extends BaseBlockNotFull implements IRenderTyped, BonemealableBlock { private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 14, 12); @@ -97,7 +98,7 @@ public abstract class BasePlantBlock extends BaseBlockNotFull implements IRender @Override public List getDrops(BlockState state, LootContext.Builder builder) { ItemStack tool = builder.getParameter(LootContextParams.TOOL); - if (tool != null && tool.getItem().is(FabricToolTags.SHEARS) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { + if (tool != null && FabricToolTags.SHEARS.contains(tool.getItem()) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { return Lists.newArrayList(new ItemStack(this)); } else { diff --git a/src/main/java/ru/bclib/blocks/BasePlantWithAgeBlock.java b/src/main/java/ru/bclib/blocks/BasePlantWithAgeBlock.java index a8c31d54..e78a0189 100644 --- a/src/main/java/ru/bclib/blocks/BasePlantWithAgeBlock.java +++ b/src/main/java/ru/bclib/blocks/BasePlantWithAgeBlock.java @@ -53,8 +53,9 @@ public abstract class BasePlantWithAgeBlock extends BasePlantBlock { public boolean isBonemealSuccess(Level world, Random random, BlockPos pos, BlockState state) { return true; } - + @Override + @SuppressWarnings("deprecation") public void tick(BlockState state, ServerLevel world, BlockPos pos, Random random) { super.tick(state, world, pos, random); if (random.nextInt(8) == 0) { diff --git a/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java b/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java index 0d6152ca..9cd483f4 100644 --- a/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java +++ b/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java @@ -33,6 +33,7 @@ public class BasePressurePlateBlock extends PressurePlateBlock implements BlockM } @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this)); } diff --git a/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java b/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java index 003408ba..e5d3af50 100644 --- a/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java @@ -30,8 +30,9 @@ public class BaseRotatedPillarBlock extends RotatedPillarBlock implements BlockM public BaseRotatedPillarBlock(Block block) { super(FabricBlockSettings.copyOf(block)); } - + @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this)); } diff --git a/src/main/java/ru/bclib/blocks/BaseSignBlock.java b/src/main/java/ru/bclib/blocks/BaseSignBlock.java index a650f14e..5eeb16a0 100644 --- a/src/main/java/ru/bclib/blocks/BaseSignBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseSignBlock.java @@ -48,6 +48,7 @@ import ru.bclib.client.models.ModelsHelper; import ru.bclib.interfaces.ISpetialItem; import ru.bclib.util.BlocksHelper; +@SuppressWarnings("deprecation") public class BaseSignBlock extends SignBlock implements BlockModelProvider, ISpetialItem { public static final IntegerProperty ROTATION = BlockStateProperties.ROTATION_16; public static final BooleanProperty FLOOR = BooleanProperty.create("floor"); diff --git a/src/main/java/ru/bclib/blocks/BaseSlabBlock.java b/src/main/java/ru/bclib/blocks/BaseSlabBlock.java index 43edec66..49a4af52 100644 --- a/src/main/java/ru/bclib/blocks/BaseSlabBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseSlabBlock.java @@ -35,6 +35,7 @@ public class BaseSlabBlock extends SlabBlock implements BlockModelProvider { } @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this)); } diff --git a/src/main/java/ru/bclib/blocks/BaseStairsBlock.java b/src/main/java/ru/bclib/blocks/BaseStairsBlock.java index ce2571c8..2f057e78 100644 --- a/src/main/java/ru/bclib/blocks/BaseStairsBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseStairsBlock.java @@ -37,6 +37,7 @@ public class BaseStairsBlock extends StairBlock implements BlockModelProvider { } @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this)); } diff --git a/src/main/java/ru/bclib/blocks/BaseStripableLogBlock.java b/src/main/java/ru/bclib/blocks/BaseStripableLogBlock.java index f956e04d..a552e9fc 100644 --- a/src/main/java/ru/bclib/blocks/BaseStripableLogBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseStripableLogBlock.java @@ -20,13 +20,14 @@ public class BaseStripableLogBlock extends BaseRotatedPillarBlock { private final Block striped; public BaseStripableLogBlock(MaterialColor color, Block striped) { - super(FabricBlockSettings.copyOf(striped).materialColor(color)); + super(FabricBlockSettings.copyOf(striped).mapColor(color)); this.striped = striped; } @Override + @SuppressWarnings("deprecation") public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - if (player.getMainHandItem().getItem().is(FabricToolTags.AXES)) { + if (FabricToolTags.AXES.contains(player.getMainHandItem().getItem())) { world.playSound(player, pos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); if (!world.isClientSide) { world.setBlock(pos, striped.defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS)), 11); diff --git a/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java b/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java index b11b25f1..fd0537c1 100644 --- a/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java @@ -67,7 +67,7 @@ public class BaseTerrainBlock extends BaseBlock { @Override public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - if (pathBlock != null && player.getMainHandItem().getItem().is(FabricToolTags.SHOVELS)) { + if (pathBlock != null && FabricToolTags.SHOVELS.contains(player.getMainHandItem().getItem())) { world.playSound(player, pos, SoundEvents.SHOVEL_FLATTEN, SoundSource.BLOCKS, 1.0F, 1.0F); if (!world.isClientSide) { world.setBlockAndUpdate(pos, pathBlock.defaultBlockState()); diff --git a/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java b/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java index 49ff777c..b0167f0e 100644 --- a/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java @@ -34,6 +34,7 @@ public class BaseTrapdoorBlock extends TrapDoorBlock implements IRenderTyped, Bl } @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this)); } diff --git a/src/main/java/ru/bclib/blocks/BaseUnderwaterWallPlantBlock.java b/src/main/java/ru/bclib/blocks/BaseUnderwaterWallPlantBlock.java index 5ef38d66..2254146b 100644 --- a/src/main/java/ru/bclib/blocks/BaseUnderwaterWallPlantBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseUnderwaterWallPlantBlock.java @@ -48,6 +48,7 @@ public abstract class BaseUnderwaterWallPlantBlock extends BaseWallPlantBlock im } @Override + @SuppressWarnings("deprecation") public FluidState getFluidState(BlockState state) { return Fluids.WATER.getSource(false); } diff --git a/src/main/java/ru/bclib/blocks/BaseVineBlock.java b/src/main/java/ru/bclib/blocks/BaseVineBlock.java index 2ac699d3..108dc183 100644 --- a/src/main/java/ru/bclib/blocks/BaseVineBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseVineBlock.java @@ -37,6 +37,7 @@ import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; import ru.bclib.util.BlocksHelper; +@SuppressWarnings("deprecation") public class BaseVineBlock extends BaseBlockNotFull implements IRenderTyped, BonemealableBlock { public static final EnumProperty SHAPE = BlockProperties.TRIPLE_SHAPE; private static final VoxelShape VOXEL_SHAPE = Block.box(2, 0, 2, 14, 16, 14); @@ -106,7 +107,7 @@ public class BaseVineBlock extends BaseBlockNotFull implements IRenderTyped, Bon @Override public List getDrops(BlockState state, LootContext.Builder builder) { ItemStack tool = builder.getParameter(LootContextParams.TOOL); - if (tool != null && tool.getItem().is(FabricToolTags.SHEARS) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { + if (tool != null && FabricToolTags.SHEARS.contains(tool.getItem()) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { return Lists.newArrayList(new ItemStack(this)); } else { diff --git a/src/main/java/ru/bclib/blocks/BaseWallBlock.java b/src/main/java/ru/bclib/blocks/BaseWallBlock.java index 7d232a79..031f4d31 100644 --- a/src/main/java/ru/bclib/blocks/BaseWallBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseWallBlock.java @@ -36,6 +36,7 @@ public class BaseWallBlock extends WallBlock implements BlockModelProvider { } @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this)); } diff --git a/src/main/java/ru/bclib/blocks/BaseWallPlantBlock.java b/src/main/java/ru/bclib/blocks/BaseWallPlantBlock.java index d833e3fc..9adb0c91 100644 --- a/src/main/java/ru/bclib/blocks/BaseWallPlantBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseWallPlantBlock.java @@ -113,11 +113,13 @@ public abstract class BaseWallPlantBlock extends BasePlantBlock { } @Override + @SuppressWarnings("deprecation") public BlockState rotate(BlockState state, Rotation rotation) { return BlocksHelper.rotateHorizontal(state, rotation, FACING); } @Override + @SuppressWarnings("deprecation") public BlockState mirror(BlockState state, Mirror mirror) { return BlocksHelper.mirrorHorizontal(state, mirror, FACING); } diff --git a/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java b/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java index 744392ca..28bbe68e 100644 --- a/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java @@ -33,6 +33,7 @@ public class BaseWeightedPlateBlock extends WeightedPressurePlateBlock implement } @Override + @SuppressWarnings("deprecation") public List getDrops(BlockState state, LootContext.Builder builder) { return Collections.singletonList(new ItemStack(this)); } diff --git a/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java b/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java index 47a6974b..5f33bb0a 100644 --- a/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java +++ b/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Optional; import java.util.Random; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import org.jetbrains.annotations.Nullable; import net.fabricmc.api.EnvType; @@ -36,6 +37,7 @@ import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; +@SuppressWarnings("deprecation") public abstract class FeatureSaplingBlock extends SaplingBlock implements IRenderTyped, BlockModelProvider { private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 14, 12); diff --git a/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java b/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java index 6c1895e5..ac46338c 100644 --- a/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java +++ b/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java @@ -11,7 +11,7 @@ public class SimpleLeavesBlock extends BaseBlockNotFull implements IRenderTyped public SimpleLeavesBlock(MaterialColor color) { super(FabricBlockSettings.of(Material.LEAVES) .strength(0.2F) - .materialColor(color) + .mapColor(color) .sound(SoundType.GRASS) .noOcclusion() .isValidSpawn((state, world, pos, type) -> false) @@ -22,7 +22,7 @@ public class SimpleLeavesBlock extends BaseBlockNotFull implements IRenderTyped public SimpleLeavesBlock(MaterialColor color, int light) { super(FabricBlockSettings.of(Material.LEAVES) .luminance(light) - .materialColor(color) + .mapColor(color) .strength(0.2F) .sound(SoundType.GRASS) .noOcclusion() diff --git a/src/main/java/ru/bclib/blocks/StalactiteBlock.java b/src/main/java/ru/bclib/blocks/StalactiteBlock.java index 23add876..50401565 100644 --- a/src/main/java/ru/bclib/blocks/StalactiteBlock.java +++ b/src/main/java/ru/bclib/blocks/StalactiteBlock.java @@ -43,6 +43,7 @@ import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; +@SuppressWarnings("deprecation") public class StalactiteBlock extends BaseBlockNotFull implements SimpleWaterloggedBlock, LiquidBlockContainer, IRenderTyped { public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED; public static final BooleanProperty IS_FLOOR = BlockProperties.IS_FLOOR; diff --git a/src/main/java/ru/bclib/blocks/StripableBarkBlock.java b/src/main/java/ru/bclib/blocks/StripableBarkBlock.java index c86c792a..d0195177 100644 --- a/src/main/java/ru/bclib/blocks/StripableBarkBlock.java +++ b/src/main/java/ru/bclib/blocks/StripableBarkBlock.java @@ -20,13 +20,14 @@ public class StripableBarkBlock extends BaseBarkBlock { private final Block striped; public StripableBarkBlock(MaterialColor color, Block striped) { - super(FabricBlockSettings.copyOf(striped).materialColor(color)); + super(FabricBlockSettings.copyOf(striped).mapColor(color)); this.striped = striped; } @Override + @SuppressWarnings("deprecation") public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - if (player.getMainHandItem().getItem().is(FabricToolTags.AXES)) { + if (FabricToolTags.AXES.contains(player.getMainHandItem().getItem())) { world.playSound(player, pos, SoundEvents.AXE_STRIP, SoundSource.BLOCKS, 1.0F, 1.0F); if (!world.isClientSide) { world.setBlock(pos, striped.defaultBlockState().setValue(RotatedPillarBlock.AXIS, state.getValue(RotatedPillarBlock.AXIS)), 11); diff --git a/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java b/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java index 171deae0..4d168107 100644 --- a/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java +++ b/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java @@ -37,6 +37,7 @@ import net.minecraft.world.phys.shapes.VoxelShape; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; +@SuppressWarnings("deprecation") public abstract class UnderwaterPlantBlock extends BaseBlockNotFull implements IRenderTyped, BonemealableBlock, LiquidBlockContainer { private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 14, 12); @@ -95,7 +96,7 @@ public abstract class UnderwaterPlantBlock extends BaseBlockNotFull implements I @Override public List getDrops(BlockState state, LootContext.Builder builder) { ItemStack tool = builder.getParameter(LootContextParams.TOOL); - if (tool != null && tool.getItem().is(FabricToolTags.SHEARS) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { + if (tool != null && FabricToolTags.SHEARS.contains(tool.getItem()) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { return Lists.newArrayList(new ItemStack(this)); } else { diff --git a/src/main/java/ru/bclib/blocks/UnderwaterPlantWithAgeBlock.java b/src/main/java/ru/bclib/blocks/UnderwaterPlantWithAgeBlock.java index fb7870b8..8b6499a2 100644 --- a/src/main/java/ru/bclib/blocks/UnderwaterPlantWithAgeBlock.java +++ b/src/main/java/ru/bclib/blocks/UnderwaterPlantWithAgeBlock.java @@ -47,6 +47,7 @@ public abstract class UnderwaterPlantWithAgeBlock extends UnderwaterPlantBlock { } @Override + @SuppressWarnings("deprecation") public void tick(BlockState state, ServerLevel world, BlockPos pos, Random random) { super.tick(state, world, pos, random); if (isBonemealSuccess(world, random, pos, state)) { diff --git a/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java b/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java index 3d18763a..0773a45b 100644 --- a/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java +++ b/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java @@ -29,6 +29,7 @@ import net.minecraft.world.phys.shapes.VoxelShape; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; +@SuppressWarnings("deprecation") public abstract class UpDownPlantBlock extends BaseBlockNotFull implements IRenderTyped { private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 16, 12); @@ -71,7 +72,7 @@ public abstract class UpDownPlantBlock extends BaseBlockNotFull implements IRend @Override public List getDrops(BlockState state, LootContext.Builder builder) { ItemStack tool = builder.getParameter(LootContextParams.TOOL); - if (tool != null && tool.getItem().is(FabricToolTags.SHEARS) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { + if (tool != null && FabricToolTags.SHEARS.contains(tool.getItem()) || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, tool) > 0) { return Lists.newArrayList(new ItemStack(this)); } else { diff --git a/src/main/java/ru/bclib/client/render/BaseChestBlockEntityRenderer.java b/src/main/java/ru/bclib/client/render/BaseChestBlockEntityRenderer.java index 81459f8c..064cb834 100644 --- a/src/main/java/ru/bclib/client/render/BaseChestBlockEntityRenderer.java +++ b/src/main/java/ru/bclib/client/render/BaseChestBlockEntityRenderer.java @@ -1,12 +1,9 @@ package ru.bclib.client.render; -import java.util.HashMap; - import com.google.common.collect.Maps; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Vector3f; - import it.unimi.dsi.fastutil.floats.Float2FloatFunction; import it.unimi.dsi.fastutil.ints.Int2IntFunction; import net.fabricmc.api.EnvType; @@ -21,18 +18,15 @@ import net.minecraft.core.Direction; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.AbstractChestBlock; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.ChestBlock; -import net.minecraft.world.level.block.DoubleBlockCombiner; +import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.DoubleBlockCombiner.NeighborCombineResult; import net.minecraft.world.level.block.entity.ChestBlockEntity; -import net.minecraft.world.level.block.entity.LidBlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.ChestType; import ru.bclib.blockentities.BaseChestBlockEntity; +import java.util.HashMap; + @Environment(EnvType.CLIENT) public class BaseChestBlockEntityRenderer implements BlockEntityRenderer { private static final HashMap LAYERS = Maps.newHashMap(); @@ -87,8 +81,8 @@ public class BaseChestBlockEntityRenderer implements BlockEntityRenderer abstractChestBlock = (AbstractChestBlock) block; @@ -107,7 +101,7 @@ public class BaseChestBlockEntityRenderer implements BlockEntityRenderer layers[ID_LEFT]; + case RIGHT -> layers[ID_RIGHT]; + default -> layers[ID_NORMAL]; + }; } public static VertexConsumer getConsumer(MultiBufferSource provider, Block block, ChestType chestType) { diff --git a/src/main/java/ru/bclib/items/BaseDrinkItem.java b/src/main/java/ru/bclib/items/BaseDrinkItem.java index cf4b520d..bb2216f2 100644 --- a/src/main/java/ru/bclib/items/BaseDrinkItem.java +++ b/src/main/java/ru/bclib/items/BaseDrinkItem.java @@ -30,7 +30,7 @@ public class BaseDrinkItem extends ModelProviderItem { @Override public InteractionResultHolder use(Level world, Player user, InteractionHand hand) { - return ItemUtils.useDrink(world, user, hand); + return ItemUtils.startUsingInstantly(world, user, hand); } @Override @@ -41,13 +41,12 @@ public class BaseDrinkItem extends ModelProviderItem { stack.setCount(count); } - if (user instanceof ServerPlayer) { - ServerPlayer serverPlayerEntity = (ServerPlayer) user; + if (user instanceof ServerPlayer serverPlayerEntity) { CriteriaTriggers.CONSUME_ITEM.trigger(serverPlayerEntity, stack); serverPlayerEntity.awardStat(Stats.ITEM_USED.get(this)); } - if (user instanceof Player && !((Player) user).abilities.instabuild) { + if (user instanceof Player && !((Player) user).getAbilities().instabuild) { stack.shrink(1); } diff --git a/src/main/java/ru/bclib/items/BaseSpawnEggItem.java b/src/main/java/ru/bclib/items/BaseSpawnEggItem.java index ec7b63f3..7badc6f9 100644 --- a/src/main/java/ru/bclib/items/BaseSpawnEggItem.java +++ b/src/main/java/ru/bclib/items/BaseSpawnEggItem.java @@ -7,6 +7,7 @@ import net.fabricmc.api.Environment; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Mob; import net.minecraft.world.item.SpawnEggItem; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.ItemModelProvider; @@ -14,7 +15,7 @@ import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; public class BaseSpawnEggItem extends SpawnEggItem implements ItemModelProvider { - public BaseSpawnEggItem(EntityType type, int primaryColor, int secondaryColor, Properties settings) { + public BaseSpawnEggItem(EntityType type, int primaryColor, int secondaryColor, Properties settings) { super(type, primaryColor, secondaryColor, settings); } diff --git a/src/main/java/ru/bclib/registry/BaseBlockEntities.java b/src/main/java/ru/bclib/registry/BaseBlockEntities.java index 989e318a..7da1352b 100644 --- a/src/main/java/ru/bclib/registry/BaseBlockEntities.java +++ b/src/main/java/ru/bclib/registry/BaseBlockEntities.java @@ -13,6 +13,7 @@ import ru.bclib.blockentities.BaseChestBlockEntity; import ru.bclib.blockentities.BaseFurnaceBlockEntity; import ru.bclib.blockentities.BaseSignBlockEntity; import ru.bclib.blockentities.DynamicBlockEntityType; +import ru.bclib.blockentities.DynamicBlockEntityType.BlockEntitySupplier; import ru.bclib.blocks.BaseBarrelBlock; import ru.bclib.blocks.BaseChestBlock; import ru.bclib.blocks.BaseFurnaceBlock; @@ -24,7 +25,7 @@ public class BaseBlockEntities { public static final DynamicBlockEntityType SIGN = registerBlockEntityType(BCLib.makeID("sign"), BaseSignBlockEntity::new); public static final DynamicBlockEntityType FURNACE = registerBlockEntityType(BCLib.makeID("furnace"), BaseFurnaceBlockEntity::new); - public static DynamicBlockEntityType registerBlockEntityType(ResourceLocation typeId, Supplier supplier) { + public static DynamicBlockEntityType registerBlockEntityType(ResourceLocation typeId, BlockEntitySupplier supplier) { return Registry.register(Registry.BLOCK_ENTITY_TYPE, typeId, new DynamicBlockEntityType<>(supplier)); } diff --git a/src/main/java/ru/bclib/registry/ItemsRegistry.java b/src/main/java/ru/bclib/registry/ItemsRegistry.java index 57d884bf..7dcc9744 100644 --- a/src/main/java/ru/bclib/registry/ItemsRegistry.java +++ b/src/main/java/ru/bclib/registry/ItemsRegistry.java @@ -9,6 +9,7 @@ import net.minecraft.sounds.SoundEvent; import net.minecraft.tags.Tag; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.MobSpawnType; import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.CreativeModeTab; @@ -67,7 +68,7 @@ public abstract class ItemsRegistry extends BaseRegistry { return item; } - public Item registerEgg(String name, EntityType type, int background, int dots) { + public Item registerEgg(String name, EntityType type, int background, int dots) { SpawnEggItem item = new BaseSpawnEggItem(type, background, dots, makeItemSettings()); DefaultDispenseItemBehavior behavior = new DefaultDispenseItemBehavior() { public ItemStack execute(BlockSource pointer, ItemStack stack) { diff --git a/src/main/java/ru/bclib/world/structures/StructureWorld.java b/src/main/java/ru/bclib/world/structures/StructureWorld.java index af49651b..8f3c80d5 100644 --- a/src/main/java/ru/bclib/world/structures/StructureWorld.java +++ b/src/main/java/ru/bclib/world/structures/StructureWorld.java @@ -100,7 +100,7 @@ public class StructureWorld { public BoundingBox getBounds() { if (minX == Integer.MAX_VALUE || maxX == Integer.MIN_VALUE || minZ == Integer.MAX_VALUE || maxZ == Integer.MIN_VALUE) { - return BoundingBox.getUnknownBox(); + return BoundingBox.infinite(); } return new BoundingBox(minX << 4, minY, minZ << 4, (maxX << 4) | 15, maxY, (maxZ << 4) | 15); } From 02068df82dc5db49b0dee1cde103e34a8ddc58c3 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 24 Jun 2021 18:02:56 +0300 Subject: [PATCH 21/43] Fixed Structure Helper --- gradle.properties | 2 +- .../java/ru/bclib/util/StructureHelper.java | 76 ++++++++++--------- 2 files changed, 40 insertions(+), 38 deletions(-) diff --git a/gradle.properties b/gradle.properties index e1474630..f0252152 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings= 6 loader_version= 0.11.6 # Mod Properties -mod_version = 0.1.43 +mod_version = 0.2.0 maven_group = ru.bclib archives_base_name = bclib diff --git a/src/main/java/ru/bclib/util/StructureHelper.java b/src/main/java/ru/bclib/util/StructureHelper.java index 179159e3..9d724ac8 100644 --- a/src/main/java/ru/bclib/util/StructureHelper.java +++ b/src/main/java/ru/bclib/util/StructureHelper.java @@ -14,6 +14,7 @@ import com.google.common.collect.Sets; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtIo; import net.minecraft.resources.ResourceLocation; @@ -27,6 +28,7 @@ import net.minecraft.world.level.levelgen.structure.BoundingBox; import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.minecraft.world.level.material.Material; +import net.minecraft.world.phys.Vec3; import ru.bclib.api.TagAPI; public class StructureHelper { @@ -86,8 +88,8 @@ public class StructureHelper { } public static BlockPos offsetPos(BlockPos pos, StructureTemplate structure, Rotation rotation, Mirror mirror) { - BlockPos offset = StructureTemplate.transform(structure.getSize(), mirror, rotation, BlockPos.ZERO); - return pos.offset(-offset.getX() * 0.5, 0, -offset.getZ() * 0.5); + Vec3 offset = StructureTemplate.transform(Vec3.atCenterOf(structure.getSize()), mirror, rotation, BlockPos.ZERO); + return pos.offset(-offset.x * 0.5, 0, -offset.z * 0.5); } public static void placeCenteredBottom(WorldGenLevel world, BlockPos pos, StructureTemplate structure, Rotation rotation, Mirror mirror, Random random) { @@ -97,7 +99,7 @@ public class StructureHelper { public static void placeCenteredBottom(WorldGenLevel world, BlockPos pos, StructureTemplate structure, Rotation rotation, Mirror mirror, BoundingBox bounds, Random random) { BlockPos offset = offsetPos(pos, structure, rotation, mirror); StructurePlaceSettings placementData = new StructurePlaceSettings().setRotation(rotation).setMirror(mirror).setBoundingBox(bounds); - structure.placeInWorldChunk(world, offset, placementData, random); + structure.placeInWorld(world, offset, offset, placementData, random, 4); } private static BoundingBox makeBox(BlockPos pos) { @@ -105,37 +107,37 @@ public class StructureHelper { int sz = ((pos.getZ() >> 4) << 4) - 16; int ex = sx + 47; int ez = sz + 47; - return BoundingBox.createProper(sx, 0, sz, ex, 255, ez); + return BoundingBox.fromCorners(new Vec3i(sx, 0, sz), new Vec3i(ex, 255, ez)); } public static BoundingBox getStructureBounds(BlockPos pos, StructureTemplate structure, Rotation rotation, Mirror mirror) { - BlockPos max = structure.getSize(); - BlockPos min = StructureTemplate.transform(structure.getSize(), mirror, rotation, BlockPos.ZERO); - max = max.subtract(min); - return new BoundingBox(min.offset(pos), max.offset(pos)); + Vec3i max = structure.getSize(); + Vec3 min = StructureTemplate.transform(Vec3.atCenterOf(structure.getSize()), mirror, rotation, BlockPos.ZERO); + max = max.offset(-min.x, -min.y, -min.z); + return BoundingBox.fromCorners(pos.offset(min.x, min.y, min.z), max.offset(pos)); } public static BoundingBox intersectBoxes(BoundingBox box1, BoundingBox box2) { - int x1 = MHelper.max(box1.x0, box2.x0); - int y1 = MHelper.max(box1.y0, box2.y0); - int z1 = MHelper.max(box1.z0, box2.z0); + int x1 = MHelper.max(box1.minX(), box2.minX()); + int y1 = MHelper.max(box1.minY(), box2.minY()); + int z1 = MHelper.max(box1.minZ(), box2.minZ()); - int x2 = MHelper.min(box1.x1, box2.x1); - int y2 = MHelper.min(box1.y1, box2.y1); - int z2 = MHelper.min(box1.z1, box2.z1); + int x2 = MHelper.min(box1.maxX(), box2.maxX()); + int y2 = MHelper.min(box1.maxY(), box2.maxY()); + int z2 = MHelper.min(box1.maxZ(), box2.maxZ()); - return BoundingBox.createProper(x1, y1, z1, x2, y2, z2); + return BoundingBox.fromCorners(new Vec3i(x1, y1, z1), new Vec3i(x2, y2, z2)); } public static void erode(WorldGenLevel world, BoundingBox bounds, int iterations, Random random) { MutableBlockPos mut = new MutableBlockPos(); boolean canDestruct = true; for (int i = 0; i < iterations; i++) { - for (int x = bounds.x0; x <= bounds.x1; x++) { + for (int x = bounds.minX(); x <= bounds.maxX(); x++) { mut.setX(x); - for (int z = bounds.z0; z <= bounds.z1; z++) { + for (int z = bounds.minZ(); z <= bounds.maxZ(); z++) { mut.setZ(z); - for (int y = bounds.y1; y >= bounds.y0; y--) { + for (int y = bounds.maxY(); y >= bounds.minY(); y--) { mut.setY(y); BlockState state = world.getBlockState(mut); boolean ignore = ignore(state, world, mut); @@ -183,7 +185,7 @@ public class StructureHelper { if (world.isEmptyBlock(mut.relative(dir)) && world.isEmptyBlock(mut.below().relative(dir))) { BlocksHelper.setWithoutUpdate(world, mut, Blocks.AIR); mut.move(dir).move(Direction.DOWN); - for (int py = mut.getY(); y >= bounds.y0 - 10; y--) { + for (int py = mut.getY(); y >= bounds.minY() - 10; y--) { mut.setY(py - 1); if (!world.isEmptyBlock(mut)) { mut.setY(py); @@ -202,16 +204,16 @@ public class StructureHelper { } } } - for (int x = bounds.x0; x <= bounds.x1; x++) { + for (int x = bounds.minX(); x <= bounds.maxX(); x++) { mut.setX(x); - for (int z = bounds.z0; z <= bounds.z1; z++) { + for (int z = bounds.minZ(); z <= bounds.maxZ(); z++) { mut.setZ(z); - for (int y = bounds.y1; y >= bounds.y0; y--) { + for (int y = bounds.maxY(); y >= bounds.minY(); y--) { mut.setY(y); BlockState state = world.getBlockState(mut); if (!ignore(state, world, mut) && world.isEmptyBlock(mut.below())) { BlocksHelper.setWithoutUpdate(world, mut, Blocks.AIR); - for (int py = mut.getY(); py >= bounds.y0 - 10; py--) { + for (int py = mut.getY(); py >= bounds.minY() - 10; py--) { mut.setY(py - 1); if (!world.isEmptyBlock(mut)) { mut.setY(py); @@ -228,12 +230,12 @@ public class StructureHelper { public static void erodeIntense(WorldGenLevel world, BoundingBox bounds, Random random) { MutableBlockPos mut = new MutableBlockPos(); MutableBlockPos mut2 = new MutableBlockPos(); - int minY = bounds.y0 - 10; - for (int x = bounds.x0; x <= bounds.x1; x++) { + int minY = bounds.minY() - 10; + for (int x = bounds.minX(); x <= bounds.maxX(); x++) { mut.setX(x); - for (int z = bounds.z0; z <= bounds.z1; z++) { + for (int z = bounds.minZ(); z <= bounds.maxZ(); z++) { mut.setZ(z); - for (int y = bounds.y1; y >= bounds.y0; y--) { + for (int y = bounds.maxY(); y >= bounds.minY(); y--) { mut.setY(y); BlockState state = world.getBlockState(mut); if (!ignore(state, world, mut)) { @@ -279,11 +281,11 @@ public class StructureHelper { Set edge = Sets.newHashSet(); Set add = Sets.newHashSet(); - for (int x = bounds.x0; x <= bounds.x1; x++) { + for (int x = bounds.minX(); x <= bounds.maxX(); x++) { mut.setX(x); - for (int z = bounds.z0; z <= bounds.z1; z++) { + for (int z = bounds.minZ(); z <= bounds.maxZ(); z++) { mut.setZ(z); - for (int y = bounds.y0; y <= bounds.y1; y++) { + for (int y = bounds.minY(); y <= bounds.maxY(); y++) { mut.setY(y); BlockState state = world.getBlockState(mut); if (!ignore(state, world, mut) && isTerrainNear(world, mut)) { @@ -319,12 +321,12 @@ public class StructureHelper { add.clear(); } - int minY = bounds.y0 - 10; - for (int x = bounds.x0; x <= bounds.x1; x++) { + int minY = bounds.minY() - 10; + for (int x = bounds.minX(); x <= bounds.maxX(); x++) { mut.setX(x); - for (int z = bounds.z0; z <= bounds.z1; z++) { + for (int z = bounds.minZ(); z <= bounds.maxZ(); z++) { mut.setZ(z); - for (int y = bounds.y0; y <= bounds.y1; y++) { + for (int y = bounds.minY(); y <= bounds.maxY(); y++) { mut.setY(y); BlockState state = world.getBlockState(mut); if (!ignore(state, world, mut) && !blocks.contains(mut)) { @@ -355,12 +357,12 @@ public class StructureHelper { public static void cover(WorldGenLevel world, BoundingBox bounds, Random random) { MutableBlockPos mut = new MutableBlockPos(); - for (int x = bounds.x0; x <= bounds.x1; x++) { + for (int x = bounds.minX(); x <= bounds.maxX(); x++) { mut.setX(x); - for (int z = bounds.z0; z <= bounds.z1; z++) { + for (int z = bounds.minZ(); z <= bounds.maxZ(); z++) { mut.setZ(z); BlockState top = world.getBiome(mut).getGenerationSettings().getSurfaceBuilderConfig().getTopMaterial(); - for (int y = bounds.y1; y >= bounds.y0; y--) { + for (int y = bounds.maxY(); y >= bounds.minY(); y--) { mut.setY(y); BlockState state = world.getBlockState(mut); if (state.is(TagAPI.END_GROUND) && !world.getBlockState(mut.above()).getMaterial().isSolidBlocking()) { From 947b790138e9d1fad6ed0070afe83eee685f4824 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 24 Jun 2021 18:06:24 +0300 Subject: [PATCH 22/43] NBT Structure fix & Surface Builder fix --- .../ru/bclib/world/features/NBTStructureFeature.java | 5 +++-- .../world/surface/DoubleBlockSurfaceBuilder.java | 12 ++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main/java/ru/bclib/world/features/NBTStructureFeature.java b/src/main/java/ru/bclib/world/features/NBTStructureFeature.java index 598a3078..e48bfb5a 100644 --- a/src/main/java/ru/bclib/world/features/NBTStructureFeature.java +++ b/src/main/java/ru/bclib/world/features/NBTStructureFeature.java @@ -7,6 +7,7 @@ import java.util.Random; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; +import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtIo; import net.minecraft.resources.ResourceLocation; @@ -101,7 +102,7 @@ public abstract class NBTStructureFeature extends DefaultFeature { StructurePlaceSettings placementData = new StructurePlaceSettings().setRotation(rotation).setMirror(mirror).setBoundingBox(bounds); addStructureData(placementData); center = center.offset(-offset.getX() * 0.5, 0, -offset.getZ() * 0.5); - structure.placeInWorld(world, center, placementData, random); + structure.placeInWorld(world, center, center, placementData, random, 4); TerrainMerge merge = getTerrainMerge(world, center, random); int x1 = center.getX(); @@ -173,7 +174,7 @@ public abstract class NBTStructureFeature extends DefaultFeature { int sz = ((pos.getZ() >> 4) << 4) - 16; int ex = sx + 47; int ez = sz + 47; - return BoundingBox.createProper(sx, 0, sz, ex, 255, ez); + return BoundingBox.fromCorners(new Vec3i(sx, 0, sz), new Vec3i(ex, 255, ez)); } protected static StructureTemplate readStructure(ResourceLocation resource) { diff --git a/src/main/java/ru/bclib/world/surface/DoubleBlockSurfaceBuilder.java b/src/main/java/ru/bclib/world/surface/DoubleBlockSurfaceBuilder.java index 1e19d33e..14e6bba4 100644 --- a/src/main/java/ru/bclib/world/surface/DoubleBlockSurfaceBuilder.java +++ b/src/main/java/ru/bclib/world/surface/DoubleBlockSurfaceBuilder.java @@ -34,12 +34,6 @@ public class DoubleBlockSurfaceBuilder extends SurfaceBuilder 0 ? config1 : config2); - } public static DoubleBlockSurfaceBuilder register(String name) { return Registry.register(Registry.SURFACE_BUILDER, name, new DoubleBlockSurfaceBuilder()); @@ -49,4 +43,10 @@ public class DoubleBlockSurfaceBuilder extends SurfaceBuilder 0 ? config1 : config2); + } } \ No newline at end of file From 3143de77c3a58604441ed5e292cb87277eaf54b5 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Thu, 24 Jun 2021 18:08:27 +0300 Subject: [PATCH 23/43] Fixed feature sapling block --- src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java b/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java index 5f33bb0a..38548c2f 100644 --- a/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java +++ b/src/main/java/ru/bclib/blocks/FeatureSaplingBlock.java @@ -87,7 +87,8 @@ public abstract class FeatureSaplingBlock extends SaplingBlock implements IRende @Override public void advanceTree(ServerLevel world, BlockPos pos, BlockState blockState, Random random) { - getFeature().place(world, world.getChunkSource().getGenerator(), random, pos, null); + FeaturePlaceContext context = new FeaturePlaceContext(world, world.getChunkSource().getGenerator(), random, pos, null); + getFeature().place(context); } @Override From a39989b33153b916ca0262ba4cbd02c092abb394 Mon Sep 17 00:00:00 2001 From: Frank Bauer Date: Fri, 25 Jun 2021 10:23:06 +0200 Subject: [PATCH 24/43] Signs with custom Models --- .../bclib/client/gui/BlockSignEditScreen.java | 16 +-- .../render/BaseSignBlockEntityRenderer.java | 128 +++++++++++++++--- 2 files changed, 112 insertions(+), 32 deletions(-) diff --git a/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java b/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java index 25be05c9..9bfd66a0 100644 --- a/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java +++ b/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java @@ -5,12 +5,7 @@ import java.util.Arrays; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.Lighting; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.BufferBuilder; -import com.mojang.blaze3d.vertex.BufferUploader; -import com.mojang.blaze3d.vertex.DefaultVertexFormat; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.Tesselator; -import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.*; import com.mojang.math.Matrix4f; import net.fabricmc.api.EnvType; @@ -20,6 +15,7 @@ import net.minecraft.client.gui.GuiComponent; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.font.TextFieldHelper; import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.model.geom.PartNames; import net.minecraft.client.multiplayer.ClientPacketListener; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.blockentity.SignRenderer.SignModel; @@ -51,7 +47,7 @@ public class BlockSignEditScreen extends Screen { protected void init() { minecraft.keyboardHandler.setSendRepeatsToGui(true); - this.addButton(new Button(this.width / 2 - 100, this.height / 4 + 120, 200, 20, CommonComponents.GUI_DONE, + this.addRenderableWidget(new Button(this.width / 2 - 100, this.height / 4 + 120, 200, 20, CommonComponents.GUI_DONE, (buttonWidget) -> { this.finishEditing(); })); @@ -80,7 +76,7 @@ public class BlockSignEditScreen extends Screen { public void tick() { ++this.ticksSinceOpened; - if (!this.sign.getType().isValid(this.sign.getBlockState().getBlock())) { + if (!this.sign.getType().isValid(this.sign.getBlockState())) { this.finishEditing(); } } @@ -135,7 +131,7 @@ public class BlockSignEditScreen extends Screen { matrices.scale(0.6666667F, -0.6666667F, -0.6666667F); MultiBufferSource.BufferSource immediate = minecraft.renderBuffers().bufferSource(); VertexConsumer vertexConsumer = BaseSignBlockEntityRenderer.getConsumer(immediate, blockState.getBlock()); - model.sign.render(matrices, vertexConsumer, 15728880, OverlayTexture.NO_OVERLAY); + model.root.getChild("sign").render(matrices, vertexConsumer, 15728880, OverlayTexture.NO_OVERLAY); if (bl) { model.stick.render(matrices, vertexConsumer, 15728880, OverlayTexture.NO_OVERLAY); @@ -206,7 +202,7 @@ public class BlockSignEditScreen extends Screen { RenderSystem.disableTexture(); RenderSystem.enableColorLogicOp(); RenderSystem.logicOp(GlStateManager.LogicOp.OR_REVERSE); - bufferBuilder.begin(7, DefaultVertexFormat.POSITION_COLOR); + bufferBuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); float var32 = (float) x; bufferBuilder.vertex(matrix4f, var32, (float) (l + 9), 0.0F).color(0, 0, 255, 255).endVertex(); var32 = (float) y; diff --git a/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java b/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java index 33697f60..4d06b65e 100644 --- a/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java +++ b/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java @@ -1,68 +1,98 @@ package ru.bclib.client.render; -import java.util.HashMap; -import java.util.List; - +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; import com.mojang.blaze3d.platform.NativeImage; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Vector3f; - +import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityModelLayerRegistry; +import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.Sheets; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.SignRenderer; import net.minecraft.client.renderer.blockentity.SignRenderer.SignModel; +import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.resources.model.Material; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.FormattedCharSequence; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.DyeColor; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.SignBlock; import net.minecraft.world.level.block.StandingSignBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.WoodType; +import net.minecraft.world.phys.Vec3; import ru.bclib.blockentities.BaseSignBlockEntity; import ru.bclib.blocks.BaseSignBlock; +import java.util.*; + public class BaseSignBlockEntityRenderer implements BlockEntityRenderer { private static final HashMap LAYERS = Maps.newHashMap(); + private static final Set TYPES = new HashSet<>(); private static final RenderType defaultLayer; - private final SignModel model = new SignRenderer.SignModel(); + private final Font font; + private final Map signModels; + private final SignModel defaultModel; - public BaseSignBlockEntityRenderer(BlockEntityRenderDispatcher dispatcher) { - super(dispatcher); + private static final int OUTLINE_RENDER_DISTANCE = Mth.square(16); + + public BaseSignBlockEntityRenderer(EntityRendererProvider.Context ctx, ModelLayerLocation signLayerLocation) { + super(); + + //build a list of all new sign models. + this.signModels = (Map) TYPES.stream().collect(ImmutableMap.toImmutableMap((signType) -> { + return signType; + }, (signType) -> { + return new SignRenderer.SignModel(ctx.bakeLayer(ModelLayers.createSignModelName(signType))); + })); + + //set up a default model + defaultModel = new SignRenderer.SignModel(ctx.bakeLayer(ModelLayers.createSignModelName(WoodType.OAK))); + + this.font = ctx.getFont(); } public void render(BaseSignBlockEntity signBlockEntity, float tickDelta, PoseStack matrixStack, MultiBufferSource provider, int light, int overlay) { BlockState state = signBlockEntity.getBlockState(); + WoodType woodType = getSignType(state.getBlock()); + SignRenderer.SignModel model = this.signModels.get(woodType); + matrixStack.pushPose(); + matrixStack.translate(0.5D, 0.5D, 0.5D); float angle = -((float) (state.getValue(StandingSignBlock.ROTATION) * 360) / 16.0F); BlockState blockState = signBlockEntity.getBlockState(); if (blockState.getValue(BaseSignBlock.FLOOR)) { matrixStack.mulPose(Vector3f.YP.rotationDegrees(angle)); - this.model.stick.visible = true; + model.stick.visible = true; } else { matrixStack.mulPose(Vector3f.YP.rotationDegrees(angle + 180)); matrixStack.translate(0.0D, -0.3125D, -0.4375D); - this.model.stick.visible = false; + model.stick.visible = false; } matrixStack.pushPose(); matrixStack.scale(0.6666667F, -0.6666667F, -0.6666667F); VertexConsumer vertexConsumer = getConsumer(provider, state.getBlock()); - model.sign.render(matrixStack, vertexConsumer, light, overlay); - model.stick.render(matrixStack, vertexConsumer, light, overlay); + + model.root.render(matrixStack, vertexConsumer, light, overlay); + //model.stick.render(matrixStack, vertexConsumer, light, overlay); matrixStack.popPose(); - Font textRenderer = renderer.getFont(); + //Font textRenderer = renderer.getFont(); matrixStack.translate(0.0D, 0.3333333432674408D, 0.046666666865348816D); matrixStack.scale(0.010416667F, -0.010416667F, 0.010416667F); int m = signBlockEntity.getColor().getTextColor(); @@ -71,21 +101,57 @@ public class BaseSignBlockEntityRenderer implements BlockEntityRenderer { + List list = this.font.split(component, 90); + return list.isEmpty() ? FormattedCharSequence.EMPTY : (FormattedCharSequence) list.get(0); + }); + int drawColor; + boolean drawOutlined; + int drawLight; + if (signBlockEntity.hasGlowingText()) { + drawColor = signBlockEntity.getColor().getTextColor(); + drawOutlined = isOutlineVisible(signBlockEntity, drawColor); + drawLight = 15728880; + } else { + drawColor = m; + drawOutlined = false; + drawLight = light; + } + for (int s = 0; s < 4; ++s) { - FormattedCharSequence orderedText = signBlockEntity.getRenderMessage(s, (text) -> { - List list = textRenderer.split(text, 90); - return list.isEmpty() ? FormattedCharSequence.EMPTY : list.get(0); - }); - if (orderedText != null) { - float t = (float) (-textRenderer.width(orderedText) / 2); - textRenderer.drawInBatch(orderedText, t, (float) (s * 10 - 20), q, false, matrixStack.last().pose(), provider, false, 0, light); + FormattedCharSequence formattedCharSequence = formattedCharSequences[s]; + float t = (float) (-this.font.width(formattedCharSequence) / 2); + if (drawOutlined) { + this.font.drawInBatch8xOutline(formattedCharSequence, t, (float) (s * 10 - 20), drawColor, m, + matrixStack.last().pose(), provider, drawLight); + } else { + this.font.drawInBatch((FormattedCharSequence) formattedCharSequence, t, (float) (s * 10 - 20), drawColor, false, + matrixStack.last().pose(), provider, false, 0, drawLight); } } + matrixStack.popPose(); } - public static Material getModelTexture(Block block) { + private static boolean isOutlineVisible(BaseSignBlockEntity signBlockEntity, int i) { + if (i == DyeColor.BLACK.getTextColor()) { + return true; + } else { + Minecraft minecraft = Minecraft.getInstance(); + LocalPlayer localPlayer = minecraft.player; + if (localPlayer != null && minecraft.options.getCameraType().isFirstPerson() && localPlayer.isScoping()) { + return true; + } else { + Entity entity = minecraft.getCameraEntity(); + return entity != null && entity.distanceToSqr( + Vec3.atCenterOf(signBlockEntity.getBlockPos())) < (double) OUTLINE_RENDER_DISTANCE; + } + } + } + + public static WoodType getSignType(Block block) { WoodType signType2; if (block instanceof SignBlock) { signType2 = ((SignBlock) block).type(); @@ -93,13 +159,25 @@ public class BaseSignBlockEntityRenderer implements BlockEntityRenderer Date: Fri, 25 Jun 2021 10:50:38 +0200 Subject: [PATCH 25/43] Generalized SignModel handling --- .../ru/bclib/client/SignModelFactory.java | 53 +++++++++++++++++++ .../bclib/client/gui/BlockSignEditScreen.java | 8 +-- .../render/BaseSignBlockEntityRenderer.java | 47 +++++----------- 3 files changed, 71 insertions(+), 37 deletions(-) create mode 100644 src/main/java/ru/bclib/client/SignModelFactory.java diff --git a/src/main/java/ru/bclib/client/SignModelFactory.java b/src/main/java/ru/bclib/client/SignModelFactory.java new file mode 100644 index 00000000..71550d88 --- /dev/null +++ b/src/main/java/ru/bclib/client/SignModelFactory.java @@ -0,0 +1,53 @@ +package ru.bclib.client; + +import com.google.common.collect.ImmutableMap; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; +import net.minecraft.client.renderer.blockentity.SignRenderer; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.SignBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.WoodType; +import org.jetbrains.annotations.ApiStatus; + +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +@ApiStatus.Internal +public class SignModelFactory { + public static final Set TYPES = new HashSet<>(); + + public final Map signModels; + public final SignRenderer.SignModel defaultModel; + + public SignModelFactory(EntityModelSet ctx) { + //build a list of all new sign models. + this.signModels = (Map) TYPES.stream().collect(ImmutableMap.toImmutableMap((signType) -> { + return signType; + }, (signType) -> { + return new SignRenderer.SignModel(ctx.bakeLayer(ModelLayers.createSignModelName(signType))); + })); + + //set up a default model + defaultModel = new SignRenderer.SignModel(ctx.bakeLayer(ModelLayers.createSignModelName(WoodType.OAK))); + } + + public static WoodType getSignType(Block block) { + WoodType signType2; + if (block instanceof SignBlock) { + signType2 = ((SignBlock) block).type(); + } else { + signType2 = WoodType.OAK; + } + + return signType2; + } + + public SignRenderer.SignModel getSignModel(BlockState state) { + WoodType woodType = getSignType(state.getBlock()); + SignRenderer.SignModel model = this.signModels.get(woodType); + return model; + } +} diff --git a/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java b/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java index 9bfd66a0..daa30e44 100644 --- a/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java +++ b/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java @@ -15,10 +15,9 @@ import net.minecraft.client.gui.GuiComponent; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.font.TextFieldHelper; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.model.geom.PartNames; import net.minecraft.client.multiplayer.ClientPacketListener; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.blockentity.SignRenderer.SignModel; +import net.minecraft.client.renderer.blockentity.SignRenderer; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.TextComponent; @@ -28,10 +27,10 @@ import net.minecraft.world.level.block.state.BlockState; import ru.bclib.blockentities.BaseSignBlockEntity; import ru.bclib.blocks.BaseSignBlock; import ru.bclib.client.render.BaseSignBlockEntityRenderer; +import ru.bclib.client.SignModelFactory; @Environment(EnvType.CLIENT) public class BlockSignEditScreen extends Screen { - private final SignModel model = new SignModel(); private final BaseSignBlockEntity sign; private int ticksSinceOpened; private int currentRow; @@ -39,10 +38,12 @@ public class BlockSignEditScreen extends Screen { private final String[] text = (String[]) Util.make(new String[4], (strings) -> { Arrays.fill(strings, ""); }); + final private SignModelFactory signModelFactory; public BlockSignEditScreen(BaseSignBlockEntity sign) { super(new TranslatableComponent("sign.edit")); this.sign = sign; + signModelFactory = new SignModelFactory(this.minecraft.getEntityModels()); } protected void init() { @@ -119,6 +120,7 @@ public class BlockSignEditScreen extends Screen { matrices.scale(93.75F, -93.75F, 93.75F); matrices.translate(0.0D, -1.3125D, 0.0D); BlockState blockState = this.sign.getBlockState(); + final SignRenderer.SignModel model = signModelFactory.getSignModel(blockState); boolean bl = blockState.getValue(BaseSignBlock.FLOOR); if (!bl) { diff --git a/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java b/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java index 4d06b65e..5437accc 100644 --- a/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java +++ b/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java @@ -1,6 +1,5 @@ package ru.bclib.client.render; -import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; import com.mojang.blaze3d.platform.NativeImage; import com.mojang.blaze3d.vertex.PoseStack; @@ -9,16 +8,14 @@ import com.mojang.math.Vector3f; import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityModelLayerRegistry; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; -import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.Sheets; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; -import net.minecraft.client.renderer.blockentity.SignRenderer; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.SignRenderer.SignModel; -import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.resources.model.Material; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; @@ -27,47 +24,36 @@ import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.DyeColor; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.SignBlock; import net.minecraft.world.level.block.StandingSignBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.WoodType; import net.minecraft.world.phys.Vec3; import ru.bclib.blockentities.BaseSignBlockEntity; import ru.bclib.blocks.BaseSignBlock; +import ru.bclib.client.SignModelFactory; -import java.util.*; +import java.util.HashMap; +import java.util.List; public class BaseSignBlockEntityRenderer implements BlockEntityRenderer { private static final HashMap LAYERS = Maps.newHashMap(); - private static final Set TYPES = new HashSet<>(); private static final RenderType defaultLayer; private final Font font; - private final Map signModels; - private final SignModel defaultModel; + private final SignModelFactory signModelFactory; + private static final int OUTLINE_RENDER_DISTANCE = Mth.square(16); - public BaseSignBlockEntityRenderer(EntityRendererProvider.Context ctx, ModelLayerLocation signLayerLocation) { + public BaseSignBlockEntityRenderer(BlockEntityRendererProvider.Context ctx) { super(); - - //build a list of all new sign models. - this.signModels = (Map) TYPES.stream().collect(ImmutableMap.toImmutableMap((signType) -> { - return signType; - }, (signType) -> { - return new SignRenderer.SignModel(ctx.bakeLayer(ModelLayers.createSignModelName(signType))); - })); - - //set up a default model - defaultModel = new SignRenderer.SignModel(ctx.bakeLayer(ModelLayers.createSignModelName(WoodType.OAK))); - + this.signModelFactory = new SignModelFactory(ctx.getModelSet()); this.font = ctx.getFont(); } public void render(BaseSignBlockEntity signBlockEntity, float tickDelta, PoseStack matrixStack, MultiBufferSource provider, int light, int overlay) { BlockState state = signBlockEntity.getBlockState(); - WoodType woodType = getSignType(state.getBlock()); - SignRenderer.SignModel model = this.signModels.get(woodType); + SignModel model = signModelFactory.getSignModel(state); matrixStack.pushPose(); @@ -135,6 +121,8 @@ public class BaseSignBlockEntityRenderer implements BlockEntityRenderer Date: Fri, 25 Jun 2021 11:34:24 +0200 Subject: [PATCH 26/43] Chest rendering --- .../client/models/BaseChestBlockModel.java | 91 +++++++++++++++++++ .../render/BaseChestBlockEntityRenderer.java | 53 ++--------- 2 files changed, 100 insertions(+), 44 deletions(-) create mode 100644 src/main/java/ru/bclib/client/models/BaseChestBlockModel.java diff --git a/src/main/java/ru/bclib/client/models/BaseChestBlockModel.java b/src/main/java/ru/bclib/client/models/BaseChestBlockModel.java new file mode 100644 index 00000000..d7766cf5 --- /dev/null +++ b/src/main/java/ru/bclib/client/models/BaseChestBlockModel.java @@ -0,0 +1,91 @@ +package ru.bclib.client.models; + +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; + +public class BaseChestBlockModel { + public final ModelPart partA; + public final ModelPart partC; + public final ModelPart partB; + public final ModelPart partRightA; + public final ModelPart partRightC; + public final ModelPart partRightB; + public final ModelPart partLeftA; + public final ModelPart partLeftC; + public final ModelPart partLeftB; + + public static LayerDefinition getTexturedModelData() { + MeshDefinition modelData = new MeshDefinition(); + PartDefinition modelPartData = modelData.getRoot(); + CubeDeformation deformation_partC = new CubeDeformation(0.0f); + modelPartData.addOrReplaceChild("partC", CubeListBuilder.create() + .addBox(1.0f, 0.0f, 1.0f, 14.0f, 9.0f, 14.0f, deformation_partC) + .texOffs(0, 19), + PartPose.ZERO); + + CubeDeformation deformation_partA = new CubeDeformation(0.0f); + modelPartData.addOrReplaceChild("partA", CubeListBuilder.create() + .addBox(1.0f, 0.0f, 0.0f, 14.0f, 5.0f, 14.0f, deformation_partA) + .texOffs(0, 0), + PartPose.offset(0.0f, 9.0f, 1.0f)); + + CubeDeformation deformation_partB = new CubeDeformation(0.0f); + modelPartData.addOrReplaceChild("partB", CubeListBuilder.create() + .addBox(7.0f, -1.0f, 15.0f, 2.0f, 4.0f, 1.0f, deformation_partB) + .texOffs(0, 0), + PartPose.offset(0.0f, 8.0f, 0.0f)); + + CubeDeformation deformation_partRightC = new CubeDeformation(0.0f); + modelPartData.addOrReplaceChild("partRightC", CubeListBuilder.create() + .addBox(1.0f, 0.0f, 1.0f, 15.0f, 9.0f, 14.0f, deformation_partRightC) + .texOffs(0, 19), + PartPose.ZERO); + + CubeDeformation deformation_partRightA = new CubeDeformation(0.0f); + modelPartData.addOrReplaceChild("partRightA", CubeListBuilder.create() + .addBox(1.0f, 0.0f, 0.0f, 15.0f, 5.0f, 14.0f, deformation_partRightA) + .texOffs(0, 0), + PartPose.offset(0.0f, 9.0f, 1.0f)); + + CubeDeformation deformation_partRightB = new CubeDeformation(0.0f); + PartDefinition partRightB = modelPartData.addOrReplaceChild("partRightB", CubeListBuilder.create() + .addBox(15.0f, -1.0f, 15.0f, 1.0f, 4.0f, 1.0f, deformation_partRightB) + .texOffs(0, 0), + PartPose.offset(0.0f, 8.0f, 0.0f)); + + CubeDeformation deformation_partLeftC = new CubeDeformation(0.0f); + modelPartData.addOrReplaceChild("partLeftC", CubeListBuilder.create() + .addBox(0.0f, 0.0f, 1.0f, 15.0f, 9.0f, 14.0f, deformation_partLeftC) + .texOffs(0, 19), + PartPose.ZERO); + + CubeDeformation deformation_partLeftA = new CubeDeformation(0.0f); + modelPartData.addOrReplaceChild("partLeftA", CubeListBuilder.create() + .addBox(0.0f, 0.0f, 0.0f, 15.0f, 5.0f, 14.0f, deformation_partLeftA) + .texOffs(0, 0), + PartPose.offset(0.0f, 9.0f, 1.0f)); + + CubeDeformation deformation_partLeftB = new CubeDeformation(0.0f); + modelPartData.addOrReplaceChild("partLeftB", CubeListBuilder.create() + .addBox(0.0f, -1.0f, 15.0f, 1.0f, 4.0f, 1.0f, deformation_partLeftB) + .texOffs(0, 0), + PartPose.offset(0.0f, 8.0f, 0.0f)); + + return LayerDefinition.create(modelData, 64, 64); + } + + public BaseChestBlockModel(ModelPart modelPart) { + super(); + + partC = modelPart.getChild("partC"); + partA = modelPart.getChild("partA"); + partB = modelPart.getChild("partB"); + partRightC = modelPart.getChild("partRightC"); + partRightA = modelPart.getChild("partRightA"); + partRightB = modelPart.getChild("partRightB"); + partLeftC = modelPart.getChild("partLeftC"); + partLeftA = modelPart.getChild("partLeftA"); + partLeftB = modelPart.getChild("partLeftB"); + } +} diff --git a/src/main/java/ru/bclib/client/render/BaseChestBlockEntityRenderer.java b/src/main/java/ru/bclib/client/render/BaseChestBlockEntityRenderer.java index 064cb834..96d59f04 100644 --- a/src/main/java/ru/bclib/client/render/BaseChestBlockEntityRenderer.java +++ b/src/main/java/ru/bclib/client/render/BaseChestBlockEntityRenderer.java @@ -11,8 +11,8 @@ import net.fabricmc.api.Environment; import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.blockentity.BrightnessCombiner; import net.minecraft.core.Direction; import net.minecraft.core.Registry; @@ -24,6 +24,7 @@ import net.minecraft.world.level.block.entity.ChestBlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.ChestType; import ru.bclib.blockentities.BaseChestBlockEntity; +import ru.bclib.client.models.BaseChestBlockModel; import java.util.HashMap; @@ -36,46 +37,10 @@ public class BaseChestBlockEntityRenderer implements BlockEntityRenderer Date: Fri, 25 Jun 2021 11:34:32 +0200 Subject: [PATCH 27/43] Changes to TagLoader --- .../ru/bclib/mixin/common/TagLoaderMixin.java | 15 ++++++++------- src/main/java/ru/bclib/util/TagHelper.java | 6 +++--- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/java/ru/bclib/mixin/common/TagLoaderMixin.java b/src/main/java/ru/bclib/mixin/common/TagLoaderMixin.java index 743a59f5..8652417d 100644 --- a/src/main/java/ru/bclib/mixin/common/TagLoaderMixin.java +++ b/src/main/java/ru/bclib/mixin/common/TagLoaderMixin.java @@ -1,26 +1,27 @@ package ru.bclib.mixin.common; import java.util.Map; -import java.util.concurrent.Executor; -import java.util.function.Supplier; +import net.minecraft.server.packs.resources.ResourceManager; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.Inject; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.Tag; import net.minecraft.tags.TagLoader; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import ru.bclib.util.TagHelper; @Mixin(TagLoader.class) public class TagLoaderMixin { @Shadow - private String name; + private String directory; - @ModifyArg(method = "prepare", at = @At(value = "INVOKE", target = "Ljava/util/concurrent/CompletableFuture;supplyAsync(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;")) - public Supplier> be_modifyTags(Supplier> supplier, Executor executor) { - return () -> TagHelper.apply(name, supplier.get()); + //@ModifyArg(method = "prepare", at = @At(value = "INVOKE", target = "Ljava/util/concurrent/CompletableFuture;supplyAsync(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;")) + @Inject(method="load", at=@At(value="RETURN")) + public void be_modifyTags(ResourceManager resourceManager, CallbackInfoReturnable> cir) { + TagHelper.apply(directory, cir.getReturnValue()); } } diff --git a/src/main/java/ru/bclib/util/TagHelper.java b/src/main/java/ru/bclib/util/TagHelper.java index f5dc604d..dae193d0 100644 --- a/src/main/java/ru/bclib/util/TagHelper.java +++ b/src/main/java/ru/bclib/util/TagHelper.java @@ -58,11 +58,11 @@ public class TagHelper { return builder; } - public static Map apply(String entry, Map tagsMap) { + public static Map apply(String directory, Map tagsMap) { Map> endTags = null; - if (entry.equals("block")) { + if ("tags/blocks".equals(directory)) { endTags = TAGS_BLOCK; - } else if (entry.equals("item")) { + } else if ("tags/items".equals(directory)) { endTags = TAGS_ITEM; } if (endTags != null) { From 986dc2c7a0ba1e8243dd5c9f7b13eb48b6e02548 Mon Sep 17 00:00:00 2001 From: Frank Bauer Date: Fri, 25 Jun 2021 12:38:35 +0200 Subject: [PATCH 28/43] Removed wildcard imports --- .../ru/bclib/client/gui/BlockSignEditScreen.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java b/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java index daa30e44..f870a83d 100644 --- a/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java +++ b/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java @@ -1,13 +1,16 @@ package ru.bclib.client.gui; -import java.util.Arrays; - import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.Lighting; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.*; +import com.mojang.blaze3d.vertex.BufferBuilder; +import com.mojang.blaze3d.vertex.BufferUploader; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.Tesselator; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.VertexFormat; import com.mojang.math.Matrix4f; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.Util; @@ -26,8 +29,10 @@ import net.minecraft.network.protocol.game.ServerboundSignUpdatePacket; import net.minecraft.world.level.block.state.BlockState; import ru.bclib.blockentities.BaseSignBlockEntity; import ru.bclib.blocks.BaseSignBlock; -import ru.bclib.client.render.BaseSignBlockEntityRenderer; import ru.bclib.client.SignModelFactory; +import ru.bclib.client.render.BaseSignBlockEntityRenderer; + +import java.util.Arrays; @Environment(EnvType.CLIENT) public class BlockSignEditScreen extends Screen { From 5512ece14eac2b1c9cb14153794882c410839582 Mon Sep 17 00:00:00 2001 From: Aleksey Date: Fri, 25 Jun 2021 14:38:29 +0300 Subject: [PATCH 29/43] Tag loader fix --- .../ru/bclib/mixin/common/TagLoaderMixin.java | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/main/java/ru/bclib/mixin/common/TagLoaderMixin.java b/src/main/java/ru/bclib/mixin/common/TagLoaderMixin.java index 743a59f5..462ac1d1 100644 --- a/src/main/java/ru/bclib/mixin/common/TagLoaderMixin.java +++ b/src/main/java/ru/bclib/mixin/common/TagLoaderMixin.java @@ -1,26 +1,23 @@ package ru.bclib.mixin.common; -import java.util.Map; -import java.util.concurrent.Executor; -import java.util.function.Supplier; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyArg; - import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.Tag; import net.minecraft.tags.TagLoader; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; import ru.bclib.util.TagHelper; +import java.util.Map; + @Mixin(TagLoader.class) public class TagLoaderMixin { @Shadow - private String name; + private String directory; - @ModifyArg(method = "prepare", at = @At(value = "INVOKE", target = "Ljava/util/concurrent/CompletableFuture;supplyAsync(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;")) - public Supplier> be_modifyTags(Supplier> supplier, Executor executor) { - return () -> TagHelper.apply(name, supplier.get()); + @ModifyArg(method = "loadAndBuild", at = @At(value = "INVOKE", target = "Lnet/minecraft/tags/TagLoader;build(Ljava/util/Map;)Lnet/minecraft/tags/TagCollection;")) + public Map be_modifyTags(Map tagsMap) { + return TagHelper.apply(directory, tagsMap); } } From ec4b105f098dc8a3b46395a8bd09296ebea9d653 Mon Sep 17 00:00:00 2001 From: Frank Bauer Date: Fri, 25 Jun 2021 17:48:58 +0200 Subject: [PATCH 30/43] `HEIGHTMAP_SQUARE` has index 17 --- src/main/java/ru/bclib/world/features/BCLDecorators.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ru/bclib/world/features/BCLDecorators.java b/src/main/java/ru/bclib/world/features/BCLDecorators.java index b302b031..d037c5f6 100644 --- a/src/main/java/ru/bclib/world/features/BCLDecorators.java +++ b/src/main/java/ru/bclib/world/features/BCLDecorators.java @@ -22,6 +22,6 @@ public class BCLDecorators { static { Class[] classes = Features.class.getDeclaredClasses(); Field[] fields = classes[1].getDeclaredFields(); // Decorators class - HEIGHTMAP_SQUARE = getDecorator(fields, 27); + HEIGHTMAP_SQUARE = getDecorator(fields, 17); } } From 72e7be7acec4a80d801eb9f0ef9105a92ad1c3bd Mon Sep 17 00:00:00 2001 From: Aleksey Date: Sun, 27 Jun 2021 16:00:09 +0300 Subject: [PATCH 31/43] Double slab model fix --- build.gradle | 2 +- gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- src/main/java/ru/bclib/blocks/BaseSlabBlock.java | 7 ++++++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 843c4bb2..047c6c0c 100644 --- a/build.gradle +++ b/build.gradle @@ -20,7 +20,7 @@ group = project.maven_group repositories { maven { url "https://maven.dblsaiko.net/" } - maven { url "http://server.bbkr.space:8081/artifactory/libs-release/" } + maven { url "https://server.bbkr.space:8081/artifactory/libs-release/" } maven { url "https://maven.fabricmc.net/" } maven { url 'https://maven.blamejared.com' } maven { url "https://maven.shedaniel.me/" } diff --git a/gradle.properties b/gradle.properties index a316ad08..0c0d9645 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings=6 loader_version=0.11.3 # Mod Properties -mod_version = 0.1.43 +mod_version = 0.1.44 maven_group = ru.bclib archives_base_name = bclib diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 442d9132..f371643e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/java/ru/bclib/blocks/BaseSlabBlock.java b/src/main/java/ru/bclib/blocks/BaseSlabBlock.java index 43edec66..368237d5 100644 --- a/src/main/java/ru/bclib/blocks/BaseSlabBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseSlabBlock.java @@ -49,7 +49,12 @@ public class BaseSlabBlock extends SlabBlock implements BlockModelProvider { @Environment(EnvType.CLIENT) public @Nullable BlockModel getBlockModel(ResourceLocation blockId, BlockState blockState) { ResourceLocation parentId = Registry.BLOCK.getKey(parent); - Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_SLAB, parentId); + Optional pattern; + if (blockState.getValue(TYPE) == SlabType.DOUBLE) { + pattern = PatternsHelper.createBlockSimple(parentId); + } else { + pattern = PatternsHelper.createJson(BasePatterns.BLOCK_SLAB, parentId); + } return ModelsHelper.fromPattern(pattern); } From bdab3097269329fc09e7561a28fa244004ad1171 Mon Sep 17 00:00:00 2001 From: Aleksey Date: Sun, 27 Jun 2021 16:03:29 +0300 Subject: [PATCH 32/43] Update build.gradle --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 047c6c0c..8e2dc088 100644 --- a/build.gradle +++ b/build.gradle @@ -65,6 +65,7 @@ def useApi(String dep) { processResources { inputs.property "version", project.version + duplicatesStrategy = 'WARN' from(sourceSets.main.resources.srcDirs) { include "fabric.mod.json" From 64c27a10b7005b06e2c0f38c471f4de10094d0ec Mon Sep 17 00:00:00 2001 From: Aleksey Date: Sun, 27 Jun 2021 16:06:33 +0300 Subject: [PATCH 33/43] Update build.gradle --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8e2dc088..3b9ff8a6 100644 --- a/build.gradle +++ b/build.gradle @@ -65,7 +65,7 @@ def useApi(String dep) { processResources { inputs.property "version", project.version - duplicatesStrategy = 'WARN' + duplicatesStrategy = 'EXCLUDE' from(sourceSets.main.resources.srcDirs) { include "fabric.mod.json" From ad40784871b62443c98caff880f5bc58e9e4a3ef Mon Sep 17 00:00:00 2001 From: Frank Bauer Date: Mon, 28 Jun 2021 17:38:11 +0200 Subject: [PATCH 34/43] `texOffs` before `addBox` --- .../client/models/BaseChestBlockModel.java | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/main/java/ru/bclib/client/models/BaseChestBlockModel.java b/src/main/java/ru/bclib/client/models/BaseChestBlockModel.java index d7766cf5..ec5bf62d 100644 --- a/src/main/java/ru/bclib/client/models/BaseChestBlockModel.java +++ b/src/main/java/ru/bclib/client/models/BaseChestBlockModel.java @@ -20,56 +20,56 @@ public class BaseChestBlockModel { PartDefinition modelPartData = modelData.getRoot(); CubeDeformation deformation_partC = new CubeDeformation(0.0f); modelPartData.addOrReplaceChild("partC", CubeListBuilder.create() - .addBox(1.0f, 0.0f, 1.0f, 14.0f, 9.0f, 14.0f, deformation_partC) - .texOffs(0, 19), + .texOffs(0, 19) + .addBox(1.0f, 0.0f, 1.0f, 14.0f, 9.0f, 14.0f, deformation_partC), PartPose.ZERO); CubeDeformation deformation_partA = new CubeDeformation(0.0f); modelPartData.addOrReplaceChild("partA", CubeListBuilder.create() - .addBox(1.0f, 0.0f, 0.0f, 14.0f, 5.0f, 14.0f, deformation_partA) - .texOffs(0, 0), + .texOffs(0, 0) + .addBox(1.0f, 0.0f, 0.0f, 14.0f, 5.0f, 14.0f, deformation_partA), PartPose.offset(0.0f, 9.0f, 1.0f)); CubeDeformation deformation_partB = new CubeDeformation(0.0f); modelPartData.addOrReplaceChild("partB", CubeListBuilder.create() - .addBox(7.0f, -1.0f, 15.0f, 2.0f, 4.0f, 1.0f, deformation_partB) - .texOffs(0, 0), + .texOffs(0, 0) + .addBox(7.0f, -1.0f, 15.0f, 2.0f, 4.0f, 1.0f, deformation_partB), PartPose.offset(0.0f, 8.0f, 0.0f)); CubeDeformation deformation_partRightC = new CubeDeformation(0.0f); modelPartData.addOrReplaceChild("partRightC", CubeListBuilder.create() - .addBox(1.0f, 0.0f, 1.0f, 15.0f, 9.0f, 14.0f, deformation_partRightC) - .texOffs(0, 19), + .texOffs(0, 19) + .addBox(1.0f, 0.0f, 1.0f, 15.0f, 9.0f, 14.0f, deformation_partRightC), PartPose.ZERO); CubeDeformation deformation_partRightA = new CubeDeformation(0.0f); modelPartData.addOrReplaceChild("partRightA", CubeListBuilder.create() - .addBox(1.0f, 0.0f, 0.0f, 15.0f, 5.0f, 14.0f, deformation_partRightA) - .texOffs(0, 0), + .texOffs(0, 0) + .addBox(1.0f, 0.0f, 0.0f, 15.0f, 5.0f, 14.0f, deformation_partRightA), PartPose.offset(0.0f, 9.0f, 1.0f)); CubeDeformation deformation_partRightB = new CubeDeformation(0.0f); PartDefinition partRightB = modelPartData.addOrReplaceChild("partRightB", CubeListBuilder.create() - .addBox(15.0f, -1.0f, 15.0f, 1.0f, 4.0f, 1.0f, deformation_partRightB) - .texOffs(0, 0), + .texOffs(0, 0) + .addBox(15.0f, -1.0f, 15.0f, 1.0f, 4.0f, 1.0f, deformation_partRightB), PartPose.offset(0.0f, 8.0f, 0.0f)); CubeDeformation deformation_partLeftC = new CubeDeformation(0.0f); modelPartData.addOrReplaceChild("partLeftC", CubeListBuilder.create() - .addBox(0.0f, 0.0f, 1.0f, 15.0f, 9.0f, 14.0f, deformation_partLeftC) - .texOffs(0, 19), + .texOffs(0, 19) + .addBox(0.0f, 0.0f, 1.0f, 15.0f, 9.0f, 14.0f, deformation_partLeftC), PartPose.ZERO); CubeDeformation deformation_partLeftA = new CubeDeformation(0.0f); modelPartData.addOrReplaceChild("partLeftA", CubeListBuilder.create() - .addBox(0.0f, 0.0f, 0.0f, 15.0f, 5.0f, 14.0f, deformation_partLeftA) - .texOffs(0, 0), + .texOffs(0, 0) + .addBox(0.0f, 0.0f, 0.0f, 15.0f, 5.0f, 14.0f, deformation_partLeftA), PartPose.offset(0.0f, 9.0f, 1.0f)); CubeDeformation deformation_partLeftB = new CubeDeformation(0.0f); modelPartData.addOrReplaceChild("partLeftB", CubeListBuilder.create() - .addBox(0.0f, -1.0f, 15.0f, 1.0f, 4.0f, 1.0f, deformation_partLeftB) - .texOffs(0, 0), + .texOffs(0, 0) + .addBox(0.0f, -1.0f, 15.0f, 1.0f, 4.0f, 1.0f, deformation_partLeftB), PartPose.offset(0.0f, 8.0f, 0.0f)); return LayerDefinition.create(modelData, 64, 64); From 3725ed93679173b37bd513e822e56bc2f4e82c4c Mon Sep 17 00:00:00 2001 From: Frank Bauer Date: Mon, 28 Jun 2021 17:47:23 +0200 Subject: [PATCH 35/43] Removed code for custom sign-models --- .../ru/bclib/client/SignModelFactory.java | 53 ------------------- .../bclib/client/gui/BlockSignEditScreen.java | 10 ++-- .../render/BaseSignBlockEntityRenderer.java | 37 ++++++------- 3 files changed, 22 insertions(+), 78 deletions(-) delete mode 100644 src/main/java/ru/bclib/client/SignModelFactory.java diff --git a/src/main/java/ru/bclib/client/SignModelFactory.java b/src/main/java/ru/bclib/client/SignModelFactory.java deleted file mode 100644 index 71550d88..00000000 --- a/src/main/java/ru/bclib/client/SignModelFactory.java +++ /dev/null @@ -1,53 +0,0 @@ -package ru.bclib.client; - -import com.google.common.collect.ImmutableMap; -import net.minecraft.client.model.geom.EntityModelSet; -import net.minecraft.client.model.geom.ModelLayers; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.renderer.blockentity.SignRenderer; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.SignBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.WoodType; -import org.jetbrains.annotations.ApiStatus; - -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -@ApiStatus.Internal -public class SignModelFactory { - public static final Set TYPES = new HashSet<>(); - - public final Map signModels; - public final SignRenderer.SignModel defaultModel; - - public SignModelFactory(EntityModelSet ctx) { - //build a list of all new sign models. - this.signModels = (Map) TYPES.stream().collect(ImmutableMap.toImmutableMap((signType) -> { - return signType; - }, (signType) -> { - return new SignRenderer.SignModel(ctx.bakeLayer(ModelLayers.createSignModelName(signType))); - })); - - //set up a default model - defaultModel = new SignRenderer.SignModel(ctx.bakeLayer(ModelLayers.createSignModelName(WoodType.OAK))); - } - - public static WoodType getSignType(Block block) { - WoodType signType2; - if (block instanceof SignBlock) { - signType2 = ((SignBlock) block).type(); - } else { - signType2 = WoodType.OAK; - } - - return signType2; - } - - public SignRenderer.SignModel getSignModel(BlockState state) { - WoodType woodType = getSignType(state.getBlock()); - SignRenderer.SignModel model = this.signModels.get(woodType); - return model; - } -} diff --git a/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java b/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java index f870a83d..30beb3a2 100644 --- a/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java +++ b/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java @@ -18,6 +18,7 @@ import net.minecraft.client.gui.GuiComponent; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.font.TextFieldHelper; import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.model.geom.ModelLayers; import net.minecraft.client.multiplayer.ClientPacketListener; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.blockentity.SignRenderer; @@ -27,9 +28,9 @@ import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.network.protocol.game.ServerboundSignUpdatePacket; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.WoodType; import ru.bclib.blockentities.BaseSignBlockEntity; import ru.bclib.blocks.BaseSignBlock; -import ru.bclib.client.SignModelFactory; import ru.bclib.client.render.BaseSignBlockEntityRenderer; import java.util.Arrays; @@ -43,12 +44,14 @@ public class BlockSignEditScreen extends Screen { private final String[] text = (String[]) Util.make(new String[4], (strings) -> { Arrays.fill(strings, ""); }); - final private SignModelFactory signModelFactory; + private final SignRenderer.SignModel model; public BlockSignEditScreen(BaseSignBlockEntity sign) { super(new TranslatableComponent("sign.edit")); this.sign = sign; - signModelFactory = new SignModelFactory(this.minecraft.getEntityModels()); + + //set up a default model + model = new SignRenderer.SignModel(this.minecraft.getEntityModels().bakeLayer(ModelLayers.createSignModelName(WoodType.OAK))); } protected void init() { @@ -125,7 +128,6 @@ public class BlockSignEditScreen extends Screen { matrices.scale(93.75F, -93.75F, 93.75F); matrices.translate(0.0D, -1.3125D, 0.0D); BlockState blockState = this.sign.getBlockState(); - final SignRenderer.SignModel model = signModelFactory.getSignModel(blockState); boolean bl = blockState.getValue(BaseSignBlock.FLOOR); if (!bl) { diff --git a/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java b/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java index 5437accc..6d26f1d6 100644 --- a/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java +++ b/src/main/java/ru/bclib/client/render/BaseSignBlockEntityRenderer.java @@ -5,7 +5,6 @@ import com.mojang.blaze3d.platform.NativeImage; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Vector3f; -import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityModelLayerRegistry; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.model.geom.ModelLayers; @@ -15,7 +14,7 @@ import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.Sheets; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; -import net.minecraft.client.renderer.blockentity.SignRenderer.SignModel; +import net.minecraft.client.renderer.blockentity.SignRenderer; import net.minecraft.client.resources.model.Material; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; @@ -24,13 +23,13 @@ import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.DyeColor; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.SignBlock; import net.minecraft.world.level.block.StandingSignBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.WoodType; import net.minecraft.world.phys.Vec3; import ru.bclib.blockentities.BaseSignBlockEntity; import ru.bclib.blocks.BaseSignBlock; -import ru.bclib.client.SignModelFactory; import java.util.HashMap; import java.util.List; @@ -39,21 +38,22 @@ public class BaseSignBlockEntityRenderer implements BlockEntityRenderer LAYERS = Maps.newHashMap(); private static final RenderType defaultLayer; private final Font font; - private final SignModelFactory signModelFactory; + private final SignRenderer.SignModel model; private static final int OUTLINE_RENDER_DISTANCE = Mth.square(16); public BaseSignBlockEntityRenderer(BlockEntityRendererProvider.Context ctx) { super(); - this.signModelFactory = new SignModelFactory(ctx.getModelSet()); this.font = ctx.getFont(); + + //set up a default model + model = new SignRenderer.SignModel(ctx.bakeLayer(ModelLayers.createSignModelName(WoodType.OAK))); } public void render(BaseSignBlockEntity signBlockEntity, float tickDelta, PoseStack matrixStack, MultiBufferSource provider, int light, int overlay) { BlockState state = signBlockEntity.getBlockState(); - SignModel model = signModelFactory.getSignModel(state); matrixStack.pushPose(); @@ -139,24 +139,25 @@ public class BaseSignBlockEntityRenderer implements BlockEntityRenderer Date: Mon, 28 Jun 2021 18:05:19 +0200 Subject: [PATCH 36/43] `this.minecraft` is not available in the constructor, moved to `init` --- .../java/ru/bclib/client/gui/BlockSignEditScreen.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java b/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java index 30beb3a2..89954126 100644 --- a/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java +++ b/src/main/java/ru/bclib/client/gui/BlockSignEditScreen.java @@ -44,17 +44,17 @@ public class BlockSignEditScreen extends Screen { private final String[] text = (String[]) Util.make(new String[4], (strings) -> { Arrays.fill(strings, ""); }); - private final SignRenderer.SignModel model; + private SignRenderer.SignModel model; public BlockSignEditScreen(BaseSignBlockEntity sign) { super(new TranslatableComponent("sign.edit")); this.sign = sign; - - //set up a default model - model = new SignRenderer.SignModel(this.minecraft.getEntityModels().bakeLayer(ModelLayers.createSignModelName(WoodType.OAK))); } protected void init() { + //set up a default model + model = new SignRenderer.SignModel(this.minecraft.getEntityModels().bakeLayer(ModelLayers.createSignModelName(WoodType.OAK))); + minecraft.keyboardHandler.setSendRepeatsToGui(true); this.addRenderableWidget(new Button(this.width / 2 - 100, this.height / 4 + 120, 200, 20, CommonComponents.GUI_DONE, (buttonWidget) -> { From 1d64b215f45d4ad28ced9cdbcd371a1902dc9822 Mon Sep 17 00:00:00 2001 From: Frank Bauer Date: Mon, 28 Jun 2021 21:15:35 +0200 Subject: [PATCH 37/43] Make sure *Furnace*-Blocks tick --- .../ru/bclib/blocks/BaseFurnaceBlock.java | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java b/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java index 2b93d9a7..925a3e45 100644 --- a/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java @@ -1,14 +1,7 @@ package ru.bclib.blocks; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import org.jetbrains.annotations.Nullable; - import com.google.common.collect.Lists; import com.google.common.collect.Maps; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; @@ -20,14 +13,17 @@ import net.minecraft.stats.Stats; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.FurnaceBlock; +import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +import org.jetbrains.annotations.Nullable; import ru.bclib.blockentities.BaseFurnaceBlockEntity; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; @@ -35,6 +31,11 @@ import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; +import ru.bclib.registry.BaseBlockEntities; + +import java.util.List; +import java.util.Map; +import java.util.Optional; public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider, IRenderTyped { public BaseFurnaceBlock(Block source) { @@ -109,4 +110,15 @@ public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider } return drop; } + + @Override + @Nullable + public BlockEntityTicker getTicker(Level level, BlockState blockState, BlockEntityType blockEntityType) { + return createFurnaceTicker(level, blockEntityType, BaseBlockEntities.FURNACE); + } + + @Nullable + protected static BlockEntityTicker createFurnaceTicker(Level level, BlockEntityType blockEntityType, BlockEntityType blockEntityType2) { + return level.isClientSide ? null : createTickerHelper(blockEntityType, blockEntityType2, AbstractFurnaceBlockEntity::serverTick); + } } From b54b14782e9bd0fdfe12cacbdc6529072551732c Mon Sep 17 00:00:00 2001 From: Frank Bauer Date: Mon, 28 Jun 2021 21:16:58 +0200 Subject: [PATCH 38/43] re-enable custom tick functions for furnaces --- .../blockentities/CustomTickBlockEntity.java | 9 ++++++ .../ru/bclib/blocks/BaseFurnaceBlock.java | 30 +++++++++++++------ 2 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 src/main/java/ru/bclib/blockentities/CustomTickBlockEntity.java diff --git a/src/main/java/ru/bclib/blockentities/CustomTickBlockEntity.java b/src/main/java/ru/bclib/blockentities/CustomTickBlockEntity.java new file mode 100644 index 00000000..906fbe71 --- /dev/null +++ b/src/main/java/ru/bclib/blockentities/CustomTickBlockEntity.java @@ -0,0 +1,9 @@ +package ru.bclib.blockentities; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; + +public interface CustomTickBlockEntity { + void customTick(Level level, BlockPos pos, BlockState state); +} diff --git a/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java b/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java index 925a3e45..02f51af9 100644 --- a/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java @@ -1,7 +1,17 @@ package ru.bclib.blocks; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; +import org.jetbrains.annotations.Nullable; + import com.google.common.collect.Lists; import com.google.common.collect.Maps; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; @@ -13,18 +23,16 @@ import net.minecraft.stats.Stats; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.FurnaceBlock; -import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityTicker; -import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import org.jetbrains.annotations.Nullable; import ru.bclib.blockentities.BaseFurnaceBlockEntity; +import ru.bclib.blockentities.CustomTickBlockEntity; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; @@ -33,10 +41,6 @@ import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; import ru.bclib.registry.BaseBlockEntities; -import java.util.List; -import java.util.Map; -import java.util.Optional; - public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider, IRenderTyped { public BaseFurnaceBlock(Block source) { super(FabricBlockSettings.copyOf(source).luminance(state -> state.getValue(LIT) ? 13 : 0)); @@ -111,6 +115,14 @@ public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider return drop; } + public static void serverTick(Level level, BlockPos pos, BlockState state, T blockEntity) { + if (blockEntity instanceof CustomTickBlockEntity){ + ((CustomTickBlockEntity)blockEntity).customTick(level, pos, state); + } else { + AbstractFurnaceBlockEntity.serverTick(level, pos, state, (AbstractFurnaceBlockEntity) blockEntity); + } + } + @Override @Nullable public BlockEntityTicker getTicker(Level level, BlockState blockState, BlockEntityType blockEntityType) { @@ -119,6 +131,6 @@ public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider @Nullable protected static BlockEntityTicker createFurnaceTicker(Level level, BlockEntityType blockEntityType, BlockEntityType blockEntityType2) { - return level.isClientSide ? null : createTickerHelper(blockEntityType, blockEntityType2, AbstractFurnaceBlockEntity::serverTick); + return level.isClientSide ? null : createTickerHelper(blockEntityType, blockEntityType2, BaseFurnaceBlock::serverTick); } } From 447a19937969e50219102a074c204d459ebcf20a Mon Sep 17 00:00:00 2001 From: Frank Bauer Date: Tue, 29 Jun 2021 08:09:22 +0200 Subject: [PATCH 39/43] Revert "re-enable custom tick functions for furnaces" This reverts commit b54b14782e9bd0fdfe12cacbdc6529072551732c. --- .../blockentities/CustomTickBlockEntity.java | 9 ------ .../ru/bclib/blocks/BaseFurnaceBlock.java | 30 ++++++------------- 2 files changed, 9 insertions(+), 30 deletions(-) delete mode 100644 src/main/java/ru/bclib/blockentities/CustomTickBlockEntity.java diff --git a/src/main/java/ru/bclib/blockentities/CustomTickBlockEntity.java b/src/main/java/ru/bclib/blockentities/CustomTickBlockEntity.java deleted file mode 100644 index 906fbe71..00000000 --- a/src/main/java/ru/bclib/blockentities/CustomTickBlockEntity.java +++ /dev/null @@ -1,9 +0,0 @@ -package ru.bclib.blockentities; - -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.state.BlockState; - -public interface CustomTickBlockEntity { - void customTick(Level level, BlockPos pos, BlockState state); -} diff --git a/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java b/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java index 02f51af9..925a3e45 100644 --- a/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java @@ -1,17 +1,7 @@ package ru.bclib.blocks; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityTicker; -import net.minecraft.world.level.block.entity.BlockEntityType; -import org.jetbrains.annotations.Nullable; - import com.google.common.collect.Lists; import com.google.common.collect.Maps; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; @@ -23,16 +13,18 @@ import net.minecraft.stats.Stats; import net.minecraft.world.MenuProvider; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.FurnaceBlock; +import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityTicker; +import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +import org.jetbrains.annotations.Nullable; import ru.bclib.blockentities.BaseFurnaceBlockEntity; -import ru.bclib.blockentities.CustomTickBlockEntity; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; @@ -41,6 +33,10 @@ import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; import ru.bclib.registry.BaseBlockEntities; +import java.util.List; +import java.util.Map; +import java.util.Optional; + public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider, IRenderTyped { public BaseFurnaceBlock(Block source) { super(FabricBlockSettings.copyOf(source).luminance(state -> state.getValue(LIT) ? 13 : 0)); @@ -115,14 +111,6 @@ public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider return drop; } - public static void serverTick(Level level, BlockPos pos, BlockState state, T blockEntity) { - if (blockEntity instanceof CustomTickBlockEntity){ - ((CustomTickBlockEntity)blockEntity).customTick(level, pos, state); - } else { - AbstractFurnaceBlockEntity.serverTick(level, pos, state, (AbstractFurnaceBlockEntity) blockEntity); - } - } - @Override @Nullable public BlockEntityTicker getTicker(Level level, BlockState blockState, BlockEntityType blockEntityType) { @@ -131,6 +119,6 @@ public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider @Nullable protected static BlockEntityTicker createFurnaceTicker(Level level, BlockEntityType blockEntityType, BlockEntityType blockEntityType2) { - return level.isClientSide ? null : createTickerHelper(blockEntityType, blockEntityType2, BaseFurnaceBlock::serverTick); + return level.isClientSide ? null : createTickerHelper(blockEntityType, blockEntityType2, AbstractFurnaceBlockEntity::serverTick); } } From e7841b1b277a8f00655e77842db75e8b1781e99e Mon Sep 17 00:00:00 2001 From: Frank Bauer Date: Tue, 29 Jun 2021 23:32:31 +0200 Subject: [PATCH 40/43] `blockState`is `null` if it can not be placed --- src/main/java/ru/bclib/items/BaseAnvilItem.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/bclib/items/BaseAnvilItem.java b/src/main/java/ru/bclib/items/BaseAnvilItem.java index d4c51755..c1b36914 100644 --- a/src/main/java/ru/bclib/items/BaseAnvilItem.java +++ b/src/main/java/ru/bclib/items/BaseAnvilItem.java @@ -34,7 +34,9 @@ public class BaseAnvilItem extends BlockItem implements ItemModelProvider { BlockState blockState = super.getPlacementState(blockPlaceContext); ItemStack stack = blockPlaceContext.getItemInHand(); int destruction = stack.getOrCreateTag().getInt(DESTRUCTION); - blockState = blockState.setValue(BaseAnvilBlock.DESTRUCTION, destruction); + if (blockState != null) { + blockState = blockState.setValue(BaseAnvilBlock.DESTRUCTION, destruction); + } return blockState; } From befdd2c10a856e7c03292a293a86f86974333b3c Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 4 Jul 2021 02:02:34 +0300 Subject: [PATCH 41/43] Missing biome registry crash fix --- gradle.properties | 2 +- src/main/java/ru/bclib/api/BiomeAPI.java | 3 +++ src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 0c0d9645..d0cceeac 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings=6 loader_version=0.11.3 # Mod Properties -mod_version = 0.1.44 +mod_version = 0.1.45 maven_group = ru.bclib archives_base_name = bclib diff --git a/src/main/java/ru/bclib/api/BiomeAPI.java b/src/main/java/ru/bclib/api/BiomeAPI.java index ef927ef8..0a1cb7b5 100644 --- a/src/main/java/ru/bclib/api/BiomeAPI.java +++ b/src/main/java/ru/bclib/api/BiomeAPI.java @@ -91,6 +91,9 @@ public class BiomeAPI { * @return {@link BCLBiome} or {@code BiomeAPI.EMPTY_BIOME}. */ public static BCLBiome getFromBiome(Biome biome) { + if (biomeRegistry == null) { + return EMPTY_BIOME; + } return ID_MAP.getOrDefault(biomeRegistry.getKey(biome), EMPTY_BIOME); } diff --git a/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java b/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java index bf0fa156..ef881e4d 100644 --- a/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java +++ b/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java @@ -22,6 +22,7 @@ import net.minecraft.world.level.dimension.DimensionType; import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraft.world.level.storage.ServerLevelData; import net.minecraft.world.level.storage.WritableLevelData; +import ru.bclib.api.BiomeAPI; import ru.bclib.api.DataFixerAPI; import ru.bclib.api.WorldDataAPI; @@ -35,6 +36,8 @@ public abstract class ServerLevelMixin extends Level { @Inject(method = "*", at = @At("TAIL")) private void bcl_onServerWorldInit(MinecraftServer server, Executor workerExecutor, LevelStorageSource.LevelStorageAccess session, ServerLevelData properties, ResourceKey registryKey, DimensionType dimensionType, ChunkProgressListener worldGenerationProgressListener, ChunkGenerator chunkGenerator, boolean debugWorld, long l, List list, boolean bl, CallbackInfo info) { + BiomeAPI.initRegistry(server); + if (bcl_lastWorld != null && bcl_lastWorld.equals(session.getLevelId())) { return; } From 70b109758d3b0c811edccd95a7dfdb4a9f3c19f1 Mon Sep 17 00:00:00 2001 From: Frank Bauer Date: Sun, 4 Jul 2021 16:33:39 +0200 Subject: [PATCH 42/43] Added automatic tool configuration for blocks --- .../java/ru/bclib/blocks/BaseAnvilBlock.java | 8 +++--- .../java/ru/bclib/blocks/BaseBarrelBlock.java | 8 +++--- .../ru/bclib/blocks/BaseBookshelfBlock.java | 7 +++-- .../java/ru/bclib/blocks/BaseChainBlock.java | 7 +++-- .../java/ru/bclib/blocks/BaseChestBlock.java | 10 +++---- .../ru/bclib/blocks/BaseComposterBlock.java | 7 +++-- .../bclib/blocks/BaseCraftingTableBlock.java | 7 +++-- .../java/ru/bclib/blocks/BaseDoorBlock.java | 7 +++-- .../java/ru/bclib/blocks/BaseFenceBlock.java | 7 +++-- .../ru/bclib/blocks/BaseFurnaceBlock.java | 12 ++++----- .../java/ru/bclib/blocks/BaseGateBlock.java | 7 +++-- .../java/ru/bclib/blocks/BaseLadderBlock.java | 2 +- .../java/ru/bclib/blocks/BaseLeavesBlock.java | 7 +++-- .../ru/bclib/blocks/BaseMetalBarsBlock.java | 7 +++-- .../java/ru/bclib/blocks/BasePathBlock.java | 8 +++--- .../bclib/blocks/BasePressurePlateBlock.java | 7 +++-- .../bclib/blocks/BaseRotatedPillarBlock.java | 7 +++-- .../java/ru/bclib/blocks/BaseSignBlock.java | 2 +- .../java/ru/bclib/blocks/BaseSlabBlock.java | 7 +++-- .../java/ru/bclib/blocks/BaseStairsBlock.java | 7 +++-- .../ru/bclib/blocks/BaseStoneButtonBlock.java | 4 +-- .../bclib/blocks/BaseStripableLogBlock.java | 4 +-- .../ru/bclib/blocks/BaseTerrainBlock.java | 3 ++- .../ru/bclib/blocks/BaseTrapdoorBlock.java | 7 +++-- .../java/ru/bclib/blocks/BaseWallBlock.java | 7 +++-- .../bclib/blocks/BaseWeightedPlateBlock.java | 7 +++-- .../bclib/blocks/BaseWoodenButtonBlock.java | 4 +-- .../ru/bclib/blocks/StripableBarkBlock.java | 4 +-- src/main/java/ru/bclib/util/BlocksHelper.java | 27 +++++++++++++++++++ 29 files changed, 106 insertions(+), 102 deletions(-) diff --git a/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java b/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java index 5dafc0d5..9fee7e24 100644 --- a/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java @@ -4,14 +4,10 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import com.google.common.collect.Lists; import com.google.common.collect.Maps; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.resources.ResourceLocation; @@ -25,17 +21,19 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.items.BaseAnvilItem; +import ru.bclib.util.BlocksHelper; public abstract class BaseAnvilBlock extends AnvilBlock implements BlockModelProvider { public static final IntegerProperty DESTRUCTION = BlockProperties.DESTRUCTION; public BaseAnvilBlock(MaterialColor color) { - super(FabricBlockSettings.copyOf(Blocks.ANVIL).mapColor(color)); + super(BlocksHelper.copySettingsOf(Blocks.ANVIL).mapColor(color)); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java b/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java index b36f8843..6e023c3d 100644 --- a/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java @@ -5,11 +5,8 @@ import java.util.Map; import java.util.Optional; import java.util.Random; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -24,7 +21,6 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.monster.piglin.PiglinAi; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.BarrelBlock; import net.minecraft.world.level.block.Block; @@ -33,16 +29,18 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.phys.BlockHitResult; +import org.jetbrains.annotations.Nullable; import ru.bclib.blockentities.BaseBarrelBlockEntity; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.registry.BaseBlockEntities; +import ru.bclib.util.BlocksHelper; public class BaseBarrelBlock extends BarrelBlock implements BlockModelProvider { public BaseBarrelBlock(Block source) { - super(FabricBlockSettings.copyOf(source).noOcclusion()); + super(BlocksHelper.copySettingsOf(source).noOcclusion()); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java b/src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java index a1b68b1d..d97b69c2 100644 --- a/src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java @@ -4,11 +4,8 @@ import java.util.Collections; import java.util.List; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -19,13 +16,15 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; +import ru.bclib.util.BlocksHelper; public class BaseBookshelfBlock extends BaseBlock { public BaseBookshelfBlock(Block source) { - super(FabricBlockSettings.copyOf(source)); + super(BlocksHelper.copySettingsOf(source)); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseChainBlock.java b/src/main/java/ru/bclib/blocks/BaseChainBlock.java index c2a14fe3..9aab0184 100644 --- a/src/main/java/ru/bclib/blocks/BaseChainBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseChainBlock.java @@ -5,11 +5,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.core.Direction; @@ -20,16 +17,18 @@ import net.minecraft.world.level.block.ChainBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; +import ru.bclib.util.BlocksHelper; public class BaseChainBlock extends ChainBlock implements BlockModelProvider, IRenderTyped { public BaseChainBlock(MaterialColor color) { - super(FabricBlockSettings.copyOf(Blocks.CHAIN).mapColor(color)); + super(BlocksHelper.copySettingsOf(Blocks.CHAIN).mapColor(color)); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseChestBlock.java b/src/main/java/ru/bclib/blocks/BaseChestBlock.java index 2b89b5d2..2820b5f0 100644 --- a/src/main/java/ru/bclib/blocks/BaseChestBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseChestBlock.java @@ -3,33 +3,31 @@ package ru.bclib.blocks; import java.util.List; import java.util.Optional; -import net.minecraft.core.BlockPos; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; +import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.ChestBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.registry.BaseBlockEntities; +import ru.bclib.util.BlocksHelper; public class BaseChestBlock extends ChestBlock implements BlockModelProvider { private final Block parent; public BaseChestBlock(Block source) { - super(FabricBlockSettings.copyOf(source).noOcclusion(), () -> BaseBlockEntities.CHEST); + super(BlocksHelper.copySettingsOf(source).noOcclusion(), () -> BaseBlockEntities.CHEST); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseComposterBlock.java b/src/main/java/ru/bclib/blocks/BaseComposterBlock.java index faecc6e5..335c39ca 100644 --- a/src/main/java/ru/bclib/blocks/BaseComposterBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseComposterBlock.java @@ -5,11 +5,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.resources.ResourceLocation; @@ -18,15 +15,17 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.ComposterBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.ModelsHelper.MultiPartBuilder; import ru.bclib.client.models.PatternsHelper; +import ru.bclib.util.BlocksHelper; public class BaseComposterBlock extends ComposterBlock implements BlockModelProvider { public BaseComposterBlock(Block source) { - super(FabricBlockSettings.copyOf(source)); + super(BlocksHelper.copySettingsOf(source)); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java b/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java index 570758fe..8de112e2 100644 --- a/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java @@ -5,11 +5,8 @@ import java.util.HashMap; import java.util.List; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -17,14 +14,16 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.CraftingTableBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; +import ru.bclib.util.BlocksHelper; public class BaseCraftingTableBlock extends CraftingTableBlock implements BlockModelProvider { public BaseCraftingTableBlock(Block source) { - super(FabricBlockSettings.copyOf(source)); + super(BlocksHelper.copySettingsOf(source)); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseDoorBlock.java b/src/main/java/ru/bclib/blocks/BaseDoorBlock.java index 1c2c6245..95d47310 100644 --- a/src/main/java/ru/bclib/blocks/BaseDoorBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseDoorBlock.java @@ -5,11 +5,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -23,16 +20,18 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.DoorHingeSide; import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; +import ru.bclib.util.BlocksHelper; public class BaseDoorBlock extends DoorBlock implements IRenderTyped, BlockModelProvider { public BaseDoorBlock(Block source) { - super(FabricBlockSettings.copyOf(source).strength(3F, 3F).noOcclusion()); + super(BlocksHelper.copySettingsOf(source).strength(3F, 3F).noOcclusion()); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseFenceBlock.java b/src/main/java/ru/bclib/blocks/BaseFenceBlock.java index 85adff6e..556c368d 100644 --- a/src/main/java/ru/bclib/blocks/BaseFenceBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseFenceBlock.java @@ -5,11 +5,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -20,17 +17,19 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.FenceBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.ModelsHelper.MultiPartBuilder; import ru.bclib.client.models.PatternsHelper; +import ru.bclib.util.BlocksHelper; public class BaseFenceBlock extends FenceBlock implements BlockModelProvider { private final Block parent; public BaseFenceBlock(Block source) { - super(FabricBlockSettings.copyOf(source).noOcclusion()); + super(BlocksHelper.copySettingsOf(source).noOcclusion()); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java b/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java index 925a3e45..73072a3d 100644 --- a/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java @@ -1,10 +1,13 @@ package ru.bclib.blocks; +import java.util.List; +import java.util.Map; +import java.util.Optional; + import com.google.common.collect.Lists; import com.google.common.collect.Maps; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.core.BlockPos; @@ -32,14 +35,11 @@ import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; import ru.bclib.registry.BaseBlockEntities; - -import java.util.List; -import java.util.Map; -import java.util.Optional; +import ru.bclib.util.BlocksHelper; public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider, IRenderTyped { public BaseFurnaceBlock(Block source) { - super(FabricBlockSettings.copyOf(source).luminance(state -> state.getValue(LIT) ? 13 : 0)); + super(BlocksHelper.copySettingsOf(source).luminance(state -> state.getValue(LIT) ? 13 : 0)); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseGateBlock.java b/src/main/java/ru/bclib/blocks/BaseGateBlock.java index d765ca2d..0d34d48f 100644 --- a/src/main/java/ru/bclib/blocks/BaseGateBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseGateBlock.java @@ -5,11 +5,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.core.Registry; @@ -19,16 +16,18 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.FenceGateBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; +import ru.bclib.util.BlocksHelper; public class BaseGateBlock extends FenceGateBlock implements BlockModelProvider { private final Block parent; public BaseGateBlock(Block source) { - super(FabricBlockSettings.copyOf(source).noOcclusion()); + super(BlocksHelper.copySettingsOf(source).noOcclusion()); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseLadderBlock.java b/src/main/java/ru/bclib/blocks/BaseLadderBlock.java index 93939d8f..26871dbd 100644 --- a/src/main/java/ru/bclib/blocks/BaseLadderBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseLadderBlock.java @@ -49,7 +49,7 @@ public class BaseLadderBlock extends BaseBlockNotFull implements IRenderTyped, B protected static final VoxelShape NORTH_SHAPE = Block.box(0.0D, 0.0D, 13.0D, 16.0D, 16.0D, 16.0D); public BaseLadderBlock(Block block) { - super(FabricBlockSettings.copyOf(block).noOcclusion()); + super(BlocksHelper.copySettingsOf(block).noOcclusion()); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java b/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java index 4e644f8e..696f32ac 100644 --- a/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java @@ -4,8 +4,6 @@ import java.util.Collections; import java.util.List; import com.google.common.collect.Lists; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; @@ -22,13 +20,14 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; +import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; public class BaseLeavesBlock extends LeavesBlock implements BlockModelProvider, IRenderTyped { private final Block sapling; public BaseLeavesBlock(Block sapling, MaterialColor color) { - super(FabricBlockSettings.copyOf(Blocks.OAK_LEAVES) + super(BlocksHelper.copySettingsOf(Blocks.OAK_LEAVES) .mapColor(color) .breakByTool(FabricToolTags.HOES) .breakByTool(FabricToolTags.SHEARS) @@ -40,7 +39,7 @@ public class BaseLeavesBlock extends LeavesBlock implements BlockModelProvider, } public BaseLeavesBlock(Block sapling, MaterialColor color, int light) { - super(FabricBlockSettings.copyOf(Blocks.OAK_LEAVES) + super(BlocksHelper.copySettingsOf(Blocks.OAK_LEAVES) .mapColor(color) .luminance(light) .breakByTool(FabricToolTags.HOES) diff --git a/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java b/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java index d4ecb9bf..79fb4151 100644 --- a/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java @@ -5,11 +5,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -21,16 +18,18 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.IronBarsBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; +import ru.bclib.util.BlocksHelper; public class BaseMetalBarsBlock extends IronBarsBlock implements BlockModelProvider, IRenderTyped { public BaseMetalBarsBlock(Block source) { - super(FabricBlockSettings.copyOf(source).strength(5.0F, 6.0F).noOcclusion()); + super(BlocksHelper.copySettingsOf(source).strength(5.0F, 6.0F).noOcclusion()); } @Override diff --git a/src/main/java/ru/bclib/blocks/BasePathBlock.java b/src/main/java/ru/bclib/blocks/BasePathBlock.java index 75060542..ce068f08 100644 --- a/src/main/java/ru/bclib/blocks/BasePathBlock.java +++ b/src/main/java/ru/bclib/blocks/BasePathBlock.java @@ -5,13 +5,9 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import com.google.common.collect.Maps; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.core.BlockPos; @@ -28,9 +24,11 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; +import ru.bclib.util.BlocksHelper; @SuppressWarnings("deprecation") public class BasePathBlock extends BaseBlockNotFull { @@ -39,7 +37,7 @@ public class BasePathBlock extends BaseBlockNotFull { private Block baseBlock; public BasePathBlock(Block source) { - super(FabricBlockSettings.copyOf(source).isValidSpawn((state, world, pos, type) -> false)); + super(BlocksHelper.copySettingsOf(source).isValidSpawn((state, world, pos, type) -> false)); this.baseBlock = Blocks.DIRT; if (source instanceof BaseTerrainBlock) { BaseTerrainBlock terrain = (BaseTerrainBlock) source; diff --git a/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java b/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java index 9cd483f4..63015b4c 100644 --- a/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java +++ b/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java @@ -5,11 +5,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.core.Registry; @@ -19,16 +16,18 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.PressurePlateBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; +import ru.bclib.util.BlocksHelper; public class BasePressurePlateBlock extends PressurePlateBlock implements BlockModelProvider { private final Block parent; public BasePressurePlateBlock(Sensitivity rule, Block source) { - super(rule, FabricBlockSettings.copyOf(source).noCollission().noOcclusion().strength(0.5F)); + super(rule, BlocksHelper.copySettingsOf(source).noCollission().noOcclusion().strength(0.5F)); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java b/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java index e5d3af50..8661d687 100644 --- a/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java @@ -5,11 +5,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.resources.ResourceLocation; @@ -18,9 +15,11 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.RotatedPillarBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; +import ru.bclib.util.BlocksHelper; public class BaseRotatedPillarBlock extends RotatedPillarBlock implements BlockModelProvider { public BaseRotatedPillarBlock(Properties settings) { @@ -28,7 +27,7 @@ public class BaseRotatedPillarBlock extends RotatedPillarBlock implements BlockM } public BaseRotatedPillarBlock(Block block) { - super(FabricBlockSettings.copyOf(block)); + super(BlocksHelper.copySettingsOf(block)); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseSignBlock.java b/src/main/java/ru/bclib/blocks/BaseSignBlock.java index 5eeb16a0..1af06923 100644 --- a/src/main/java/ru/bclib/blocks/BaseSignBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseSignBlock.java @@ -62,7 +62,7 @@ public class BaseSignBlock extends SignBlock implements BlockModelProvider, ISpe private final Block parent; public BaseSignBlock(Block source) { - super(FabricBlockSettings.copyOf(source).strength(1.0F, 1.0F).noCollission().noOcclusion(), WoodType.OAK); + super(BlocksHelper.copySettingsOf(source).strength(1.0F, 1.0F).noCollission().noOcclusion(), WoodType.OAK); this.registerDefaultState(this.stateDefinition.any().setValue(ROTATION, 0).setValue(FLOOR, false).setValue(WATERLOGGED, false)); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseSlabBlock.java b/src/main/java/ru/bclib/blocks/BaseSlabBlock.java index 73c2e109..ca7c5776 100644 --- a/src/main/java/ru/bclib/blocks/BaseSlabBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseSlabBlock.java @@ -5,11 +5,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -21,16 +18,18 @@ import net.minecraft.world.level.block.SlabBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.SlabType; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; +import ru.bclib.util.BlocksHelper; public class BaseSlabBlock extends SlabBlock implements BlockModelProvider { private final Block parent; public BaseSlabBlock(Block source) { - super(FabricBlockSettings.copyOf(source)); + super(BlocksHelper.copySettingsOf(source)); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseStairsBlock.java b/src/main/java/ru/bclib/blocks/BaseStairsBlock.java index 2f057e78..9cd63bd6 100644 --- a/src/main/java/ru/bclib/blocks/BaseStairsBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseStairsBlock.java @@ -5,11 +5,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -22,17 +19,19 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.Half; import net.minecraft.world.level.block.state.properties.StairsShape; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; +import ru.bclib.util.BlocksHelper; public class BaseStairsBlock extends StairBlock implements BlockModelProvider { private final Block parent; public BaseStairsBlock(Block source) { - super(source.defaultBlockState(), FabricBlockSettings.copyOf(source)); + super(source.defaultBlockState(), BlocksHelper.copySettingsOf(source)); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseStoneButtonBlock.java b/src/main/java/ru/bclib/blocks/BaseStoneButtonBlock.java index aabc865b..12f631f8 100644 --- a/src/main/java/ru/bclib/blocks/BaseStoneButtonBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseStoneButtonBlock.java @@ -1,14 +1,14 @@ package ru.bclib.blocks; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.level.block.Block; +import ru.bclib.util.BlocksHelper; public class BaseStoneButtonBlock extends BaseButtonBlock { public BaseStoneButtonBlock(Block source) { - super(source, FabricBlockSettings.copyOf(source).noOcclusion(), false); + super(source, BlocksHelper.copySettingsOf(source).noOcclusion(), false); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseStripableLogBlock.java b/src/main/java/ru/bclib/blocks/BaseStripableLogBlock.java index a552e9fc..9f511fa6 100644 --- a/src/main/java/ru/bclib/blocks/BaseStripableLogBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseStripableLogBlock.java @@ -1,6 +1,5 @@ package ru.bclib.blocks; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerPlayer; @@ -15,12 +14,13 @@ import net.minecraft.world.level.block.RotatedPillarBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.phys.BlockHitResult; +import ru.bclib.util.BlocksHelper; public class BaseStripableLogBlock extends BaseRotatedPillarBlock { private final Block striped; public BaseStripableLogBlock(MaterialColor color, Block striped) { - super(FabricBlockSettings.copyOf(striped).mapColor(color)); + super(BlocksHelper.copySettingsOf(striped).mapColor(color)); this.striped = striped; } diff --git a/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java b/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java index fd0537c1..dcb12d09 100644 --- a/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java @@ -45,6 +45,7 @@ import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.sound.BlockSounds; +import ru.bclib.util.BlocksHelper; @SuppressWarnings("deprecation") public class BaseTerrainBlock extends BaseBlock { @@ -53,7 +54,7 @@ public class BaseTerrainBlock extends BaseBlock { private Block pathBlock; public BaseTerrainBlock(Block baseBlock, MaterialColor color) { - super(FabricBlockSettings.copyOf(baseBlock).materialColor(color).sound(BlockSounds.TERRAIN_SOUND).randomTicks()); + super(BlocksHelper.copySettingsOf(baseBlock).materialColor(color).sound(BlockSounds.TERRAIN_SOUND).randomTicks()); this.baseBlock = baseBlock; } diff --git a/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java b/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java index b0167f0e..c3d52bab 100644 --- a/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java @@ -6,11 +6,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -21,16 +18,18 @@ import net.minecraft.world.level.block.TrapDoorBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.Half; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; +import ru.bclib.util.BlocksHelper; public class BaseTrapdoorBlock extends TrapDoorBlock implements IRenderTyped, BlockModelProvider { public BaseTrapdoorBlock(Block source) { - super(FabricBlockSettings.copyOf(source).strength(3.0F, 3.0F).noOcclusion()); + super(BlocksHelper.copySettingsOf(source).strength(3.0F, 3.0F).noOcclusion()); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseWallBlock.java b/src/main/java/ru/bclib/blocks/BaseWallBlock.java index 031f4d31..cc653dd9 100644 --- a/src/main/java/ru/bclib/blocks/BaseWallBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseWallBlock.java @@ -5,11 +5,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -21,17 +18,19 @@ import net.minecraft.world.level.block.WallBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.WallSide; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; +import ru.bclib.util.BlocksHelper; public class BaseWallBlock extends WallBlock implements BlockModelProvider { private final Block parent; public BaseWallBlock(Block source) { - super(FabricBlockSettings.copyOf(source).noOcclusion()); + super(BlocksHelper.copySettingsOf(source).noOcclusion()); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java b/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java index 28bbe68e..22398932 100644 --- a/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java @@ -5,11 +5,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.jetbrains.annotations.Nullable; - import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.core.Registry; @@ -19,16 +16,18 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.WeightedPressurePlateBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; +import ru.bclib.util.BlocksHelper; public class BaseWeightedPlateBlock extends WeightedPressurePlateBlock implements BlockModelProvider { private final Block parent; public BaseWeightedPlateBlock(Block source) { - super(15, FabricBlockSettings.copyOf(source).noCollission().noOcclusion().requiresCorrectToolForDrops().strength(0.5F)); + super(15, BlocksHelper.copySettingsOf(source).noCollission().noOcclusion().requiresCorrectToolForDrops().strength(0.5F)); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseWoodenButtonBlock.java b/src/main/java/ru/bclib/blocks/BaseWoodenButtonBlock.java index daab12c0..49b2dc13 100644 --- a/src/main/java/ru/bclib/blocks/BaseWoodenButtonBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseWoodenButtonBlock.java @@ -1,14 +1,14 @@ package ru.bclib.blocks; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.level.block.Block; +import ru.bclib.util.BlocksHelper; public class BaseWoodenButtonBlock extends BaseButtonBlock { public BaseWoodenButtonBlock(Block source) { - super(source, FabricBlockSettings.copyOf(source).strength(0.5F, 0.5F).noOcclusion(), true); + super(source, BlocksHelper.copySettingsOf(source).strength(0.5F, 0.5F).noOcclusion(), true); } @Override diff --git a/src/main/java/ru/bclib/blocks/StripableBarkBlock.java b/src/main/java/ru/bclib/blocks/StripableBarkBlock.java index d0195177..312a2e2d 100644 --- a/src/main/java/ru/bclib/blocks/StripableBarkBlock.java +++ b/src/main/java/ru/bclib/blocks/StripableBarkBlock.java @@ -1,6 +1,5 @@ package ru.bclib.blocks; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerPlayer; @@ -15,12 +14,13 @@ import net.minecraft.world.level.block.RotatedPillarBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.phys.BlockHitResult; +import ru.bclib.util.BlocksHelper; public class StripableBarkBlock extends BaseBarkBlock { private final Block striped; public StripableBarkBlock(MaterialColor color, Block striped) { - super(FabricBlockSettings.copyOf(striped).mapColor(color)); + super(BlocksHelper.copySettingsOf(striped).mapColor(color)); this.striped = striped; } diff --git a/src/main/java/ru/bclib/util/BlocksHelper.java b/src/main/java/ru/bclib/util/BlocksHelper.java index 21b974f9..1b88b687 100644 --- a/src/main/java/ru/bclib/util/BlocksHelper.java +++ b/src/main/java/ru/bclib/util/BlocksHelper.java @@ -5,6 +5,12 @@ import java.util.Random; import com.google.common.collect.Maps; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.fabricmc.fabric.impl.object.builder.BlockSettingsInternals; +import net.fabricmc.fabric.impl.object.builder.FabricBlockInternals; +import net.fabricmc.fabric.mixin.object.builder.AbstractBlockAccessor; +import net.fabricmc.fabric.mixin.object.builder.AbstractBlockSettingsAccessor; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; @@ -189,4 +195,25 @@ public class BlocksHelper { return false; } } + + public static FabricBlockSettings copySettingsOf(Block block) { + FabricBlockSettings fbs = FabricBlockSettings.copyOf(block); + + AbstractBlockSettingsAccessor blockSettings = (AbstractBlockSettingsAccessor) ((AbstractBlockAccessor)block).getSettings(); + + //When settings are copied from a vanilla Block, extraData is not copied + //When a Block requires a tool, that data contains the Tag for the tool and is (by default) empty + //We will check if we created a copy of vanilla settings and if those settings require a tool. + //If so, we set the tool to a pickaxe. + if (!(blockSettings instanceof FabricBlockSettings)) { + BlockSettingsInternals blockInternals = (BlockSettingsInternals) blockSettings; + FabricBlockInternals.ExtraData extraData = blockInternals.getExtraData(); + + if (blockSettings.isToolRequired() && extraData == null) { + System.out.println("Adding PIckAXE to settings of " + block ); + fbs.breakByTool(FabricToolTags.PICKAXES); + } + } + return fbs; + } } From 67c4decf8e38a5b7fff9d5e1e0f466eec4daeee5 Mon Sep 17 00:00:00 2001 From: Frank Bauer Date: Sun, 4 Jul 2021 23:55:14 +0200 Subject: [PATCH 43/43] Revert "Added automatic tool configuration for blocks" This reverts commit 70b109758d3b0c811edccd95a7dfdb4a9f3c19f1. --- .../java/ru/bclib/blocks/BaseAnvilBlock.java | 8 +++--- .../java/ru/bclib/blocks/BaseBarrelBlock.java | 8 +++--- .../ru/bclib/blocks/BaseBookshelfBlock.java | 7 ++--- .../java/ru/bclib/blocks/BaseChainBlock.java | 7 ++--- .../java/ru/bclib/blocks/BaseChestBlock.java | 10 ++++--- .../ru/bclib/blocks/BaseComposterBlock.java | 7 ++--- .../bclib/blocks/BaseCraftingTableBlock.java | 7 ++--- .../java/ru/bclib/blocks/BaseDoorBlock.java | 7 ++--- .../java/ru/bclib/blocks/BaseFenceBlock.java | 7 ++--- .../ru/bclib/blocks/BaseFurnaceBlock.java | 12 ++++----- .../java/ru/bclib/blocks/BaseGateBlock.java | 7 ++--- .../java/ru/bclib/blocks/BaseLadderBlock.java | 2 +- .../java/ru/bclib/blocks/BaseLeavesBlock.java | 7 ++--- .../ru/bclib/blocks/BaseMetalBarsBlock.java | 7 ++--- .../java/ru/bclib/blocks/BasePathBlock.java | 8 +++--- .../bclib/blocks/BasePressurePlateBlock.java | 7 ++--- .../bclib/blocks/BaseRotatedPillarBlock.java | 7 ++--- .../java/ru/bclib/blocks/BaseSignBlock.java | 2 +- .../java/ru/bclib/blocks/BaseSlabBlock.java | 7 ++--- .../java/ru/bclib/blocks/BaseStairsBlock.java | 7 ++--- .../ru/bclib/blocks/BaseStoneButtonBlock.java | 4 +-- .../bclib/blocks/BaseStripableLogBlock.java | 4 +-- .../ru/bclib/blocks/BaseTerrainBlock.java | 3 +-- .../ru/bclib/blocks/BaseTrapdoorBlock.java | 7 ++--- .../java/ru/bclib/blocks/BaseWallBlock.java | 7 ++--- .../bclib/blocks/BaseWeightedPlateBlock.java | 7 ++--- .../bclib/blocks/BaseWoodenButtonBlock.java | 4 +-- .../ru/bclib/blocks/StripableBarkBlock.java | 4 +-- src/main/java/ru/bclib/util/BlocksHelper.java | 27 ------------------- 29 files changed, 102 insertions(+), 106 deletions(-) diff --git a/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java b/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java index 9fee7e24..5dafc0d5 100644 --- a/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseAnvilBlock.java @@ -4,10 +4,14 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import com.google.common.collect.Lists; import com.google.common.collect.Maps; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.resources.ResourceLocation; @@ -21,19 +25,17 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.IntegerProperty; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.items.BaseAnvilItem; -import ru.bclib.util.BlocksHelper; public abstract class BaseAnvilBlock extends AnvilBlock implements BlockModelProvider { public static final IntegerProperty DESTRUCTION = BlockProperties.DESTRUCTION; public BaseAnvilBlock(MaterialColor color) { - super(BlocksHelper.copySettingsOf(Blocks.ANVIL).mapColor(color)); + super(FabricBlockSettings.copyOf(Blocks.ANVIL).mapColor(color)); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java b/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java index 6e023c3d..b36f8843 100644 --- a/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseBarrelBlock.java @@ -5,8 +5,11 @@ import java.util.Map; import java.util.Optional; import java.util.Random; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -21,6 +24,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.monster.piglin.PiglinAi; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.BarrelBlock; import net.minecraft.world.level.block.Block; @@ -29,18 +33,16 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.phys.BlockHitResult; -import org.jetbrains.annotations.Nullable; import ru.bclib.blockentities.BaseBarrelBlockEntity; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.registry.BaseBlockEntities; -import ru.bclib.util.BlocksHelper; public class BaseBarrelBlock extends BarrelBlock implements BlockModelProvider { public BaseBarrelBlock(Block source) { - super(BlocksHelper.copySettingsOf(source).noOcclusion()); + super(FabricBlockSettings.copyOf(source).noOcclusion()); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java b/src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java index d97b69c2..a1b68b1d 100644 --- a/src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseBookshelfBlock.java @@ -4,8 +4,11 @@ import java.util.Collections; import java.util.List; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -16,15 +19,13 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; -import ru.bclib.util.BlocksHelper; public class BaseBookshelfBlock extends BaseBlock { public BaseBookshelfBlock(Block source) { - super(BlocksHelper.copySettingsOf(source)); + super(FabricBlockSettings.copyOf(source)); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseChainBlock.java b/src/main/java/ru/bclib/blocks/BaseChainBlock.java index 9aab0184..c2a14fe3 100644 --- a/src/main/java/ru/bclib/blocks/BaseChainBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseChainBlock.java @@ -5,8 +5,11 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.core.Direction; @@ -17,18 +20,16 @@ import net.minecraft.world.level.block.ChainBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; -import ru.bclib.util.BlocksHelper; public class BaseChainBlock extends ChainBlock implements BlockModelProvider, IRenderTyped { public BaseChainBlock(MaterialColor color) { - super(BlocksHelper.copySettingsOf(Blocks.CHAIN).mapColor(color)); + super(FabricBlockSettings.copyOf(Blocks.CHAIN).mapColor(color)); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseChestBlock.java b/src/main/java/ru/bclib/blocks/BaseChestBlock.java index 2820b5f0..2b89b5d2 100644 --- a/src/main/java/ru/bclib/blocks/BaseChestBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseChestBlock.java @@ -3,31 +3,33 @@ package ru.bclib.blocks; import java.util.List; import java.util.Optional; +import net.minecraft.core.BlockPos; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; -import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.ChestBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.registry.BaseBlockEntities; -import ru.bclib.util.BlocksHelper; public class BaseChestBlock extends ChestBlock implements BlockModelProvider { private final Block parent; public BaseChestBlock(Block source) { - super(BlocksHelper.copySettingsOf(source).noOcclusion(), () -> BaseBlockEntities.CHEST); + super(FabricBlockSettings.copyOf(source).noOcclusion(), () -> BaseBlockEntities.CHEST); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseComposterBlock.java b/src/main/java/ru/bclib/blocks/BaseComposterBlock.java index 335c39ca..faecc6e5 100644 --- a/src/main/java/ru/bclib/blocks/BaseComposterBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseComposterBlock.java @@ -5,8 +5,11 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.resources.ResourceLocation; @@ -15,17 +18,15 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.ComposterBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.ModelsHelper.MultiPartBuilder; import ru.bclib.client.models.PatternsHelper; -import ru.bclib.util.BlocksHelper; public class BaseComposterBlock extends ComposterBlock implements BlockModelProvider { public BaseComposterBlock(Block source) { - super(BlocksHelper.copySettingsOf(source)); + super(FabricBlockSettings.copyOf(source)); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java b/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java index 8de112e2..570758fe 100644 --- a/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseCraftingTableBlock.java @@ -5,8 +5,11 @@ import java.util.HashMap; import java.util.List; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; @@ -14,16 +17,14 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.CraftingTableBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; -import ru.bclib.util.BlocksHelper; public class BaseCraftingTableBlock extends CraftingTableBlock implements BlockModelProvider { public BaseCraftingTableBlock(Block source) { - super(BlocksHelper.copySettingsOf(source)); + super(FabricBlockSettings.copyOf(source)); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseDoorBlock.java b/src/main/java/ru/bclib/blocks/BaseDoorBlock.java index 95d47310..1c2c6245 100644 --- a/src/main/java/ru/bclib/blocks/BaseDoorBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseDoorBlock.java @@ -5,8 +5,11 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -20,18 +23,16 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.DoorHingeSide; import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; -import ru.bclib.util.BlocksHelper; public class BaseDoorBlock extends DoorBlock implements IRenderTyped, BlockModelProvider { public BaseDoorBlock(Block source) { - super(BlocksHelper.copySettingsOf(source).strength(3F, 3F).noOcclusion()); + super(FabricBlockSettings.copyOf(source).strength(3F, 3F).noOcclusion()); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseFenceBlock.java b/src/main/java/ru/bclib/blocks/BaseFenceBlock.java index 556c368d..85adff6e 100644 --- a/src/main/java/ru/bclib/blocks/BaseFenceBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseFenceBlock.java @@ -5,8 +5,11 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -17,19 +20,17 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.FenceBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.ModelsHelper.MultiPartBuilder; import ru.bclib.client.models.PatternsHelper; -import ru.bclib.util.BlocksHelper; public class BaseFenceBlock extends FenceBlock implements BlockModelProvider { private final Block parent; public BaseFenceBlock(Block source) { - super(BlocksHelper.copySettingsOf(source).noOcclusion()); + super(FabricBlockSettings.copyOf(source).noOcclusion()); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java b/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java index 73072a3d..925a3e45 100644 --- a/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseFurnaceBlock.java @@ -1,13 +1,10 @@ package ru.bclib.blocks; -import java.util.List; -import java.util.Map; -import java.util.Optional; - import com.google.common.collect.Lists; import com.google.common.collect.Maps; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.core.BlockPos; @@ -35,11 +32,14 @@ import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; import ru.bclib.registry.BaseBlockEntities; -import ru.bclib.util.BlocksHelper; + +import java.util.List; +import java.util.Map; +import java.util.Optional; public class BaseFurnaceBlock extends FurnaceBlock implements BlockModelProvider, IRenderTyped { public BaseFurnaceBlock(Block source) { - super(BlocksHelper.copySettingsOf(source).luminance(state -> state.getValue(LIT) ? 13 : 0)); + super(FabricBlockSettings.copyOf(source).luminance(state -> state.getValue(LIT) ? 13 : 0)); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseGateBlock.java b/src/main/java/ru/bclib/blocks/BaseGateBlock.java index 0d34d48f..d765ca2d 100644 --- a/src/main/java/ru/bclib/blocks/BaseGateBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseGateBlock.java @@ -5,8 +5,11 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.core.Registry; @@ -16,18 +19,16 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.FenceGateBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; -import ru.bclib.util.BlocksHelper; public class BaseGateBlock extends FenceGateBlock implements BlockModelProvider { private final Block parent; public BaseGateBlock(Block source) { - super(BlocksHelper.copySettingsOf(source).noOcclusion()); + super(FabricBlockSettings.copyOf(source).noOcclusion()); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseLadderBlock.java b/src/main/java/ru/bclib/blocks/BaseLadderBlock.java index 26871dbd..93939d8f 100644 --- a/src/main/java/ru/bclib/blocks/BaseLadderBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseLadderBlock.java @@ -49,7 +49,7 @@ public class BaseLadderBlock extends BaseBlockNotFull implements IRenderTyped, B protected static final VoxelShape NORTH_SHAPE = Block.box(0.0D, 0.0D, 13.0D, 16.0D, 16.0D, 16.0D); public BaseLadderBlock(Block block) { - super(BlocksHelper.copySettingsOf(block).noOcclusion()); + super(FabricBlockSettings.copyOf(block).noOcclusion()); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java b/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java index 696f32ac..4e644f8e 100644 --- a/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java @@ -4,6 +4,8 @@ import java.util.Collections; import java.util.List; import com.google.common.collect.Lists; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.resources.ResourceLocation; @@ -20,14 +22,13 @@ import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; -import ru.bclib.util.BlocksHelper; import ru.bclib.util.MHelper; public class BaseLeavesBlock extends LeavesBlock implements BlockModelProvider, IRenderTyped { private final Block sapling; public BaseLeavesBlock(Block sapling, MaterialColor color) { - super(BlocksHelper.copySettingsOf(Blocks.OAK_LEAVES) + super(FabricBlockSettings.copyOf(Blocks.OAK_LEAVES) .mapColor(color) .breakByTool(FabricToolTags.HOES) .breakByTool(FabricToolTags.SHEARS) @@ -39,7 +40,7 @@ public class BaseLeavesBlock extends LeavesBlock implements BlockModelProvider, } public BaseLeavesBlock(Block sapling, MaterialColor color, int light) { - super(BlocksHelper.copySettingsOf(Blocks.OAK_LEAVES) + super(FabricBlockSettings.copyOf(Blocks.OAK_LEAVES) .mapColor(color) .luminance(light) .breakByTool(FabricToolTags.HOES) diff --git a/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java b/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java index 79fb4151..d4ecb9bf 100644 --- a/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseMetalBarsBlock.java @@ -5,8 +5,11 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -18,18 +21,16 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.IronBarsBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; -import ru.bclib.util.BlocksHelper; public class BaseMetalBarsBlock extends IronBarsBlock implements BlockModelProvider, IRenderTyped { public BaseMetalBarsBlock(Block source) { - super(BlocksHelper.copySettingsOf(source).strength(5.0F, 6.0F).noOcclusion()); + super(FabricBlockSettings.copyOf(source).strength(5.0F, 6.0F).noOcclusion()); } @Override diff --git a/src/main/java/ru/bclib/blocks/BasePathBlock.java b/src/main/java/ru/bclib/blocks/BasePathBlock.java index ce068f08..75060542 100644 --- a/src/main/java/ru/bclib/blocks/BasePathBlock.java +++ b/src/main/java/ru/bclib/blocks/BasePathBlock.java @@ -5,9 +5,13 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import com.google.common.collect.Maps; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.core.BlockPos; @@ -24,11 +28,9 @@ import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.VoxelShape; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; -import ru.bclib.util.BlocksHelper; @SuppressWarnings("deprecation") public class BasePathBlock extends BaseBlockNotFull { @@ -37,7 +39,7 @@ public class BasePathBlock extends BaseBlockNotFull { private Block baseBlock; public BasePathBlock(Block source) { - super(BlocksHelper.copySettingsOf(source).isValidSpawn((state, world, pos, type) -> false)); + super(FabricBlockSettings.copyOf(source).isValidSpawn((state, world, pos, type) -> false)); this.baseBlock = Blocks.DIRT; if (source instanceof BaseTerrainBlock) { BaseTerrainBlock terrain = (BaseTerrainBlock) source; diff --git a/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java b/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java index 63015b4c..9cd483f4 100644 --- a/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java +++ b/src/main/java/ru/bclib/blocks/BasePressurePlateBlock.java @@ -5,8 +5,11 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.core.Registry; @@ -16,18 +19,16 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.PressurePlateBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; -import ru.bclib.util.BlocksHelper; public class BasePressurePlateBlock extends PressurePlateBlock implements BlockModelProvider { private final Block parent; public BasePressurePlateBlock(Sensitivity rule, Block source) { - super(rule, BlocksHelper.copySettingsOf(source).noCollission().noOcclusion().strength(0.5F)); + super(rule, FabricBlockSettings.copyOf(source).noCollission().noOcclusion().strength(0.5F)); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java b/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java index 8661d687..e5d3af50 100644 --- a/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseRotatedPillarBlock.java @@ -5,8 +5,11 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.resources.ResourceLocation; @@ -15,11 +18,9 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.RotatedPillarBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; -import ru.bclib.util.BlocksHelper; public class BaseRotatedPillarBlock extends RotatedPillarBlock implements BlockModelProvider { public BaseRotatedPillarBlock(Properties settings) { @@ -27,7 +28,7 @@ public class BaseRotatedPillarBlock extends RotatedPillarBlock implements BlockM } public BaseRotatedPillarBlock(Block block) { - super(BlocksHelper.copySettingsOf(block)); + super(FabricBlockSettings.copyOf(block)); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseSignBlock.java b/src/main/java/ru/bclib/blocks/BaseSignBlock.java index 1af06923..5eeb16a0 100644 --- a/src/main/java/ru/bclib/blocks/BaseSignBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseSignBlock.java @@ -62,7 +62,7 @@ public class BaseSignBlock extends SignBlock implements BlockModelProvider, ISpe private final Block parent; public BaseSignBlock(Block source) { - super(BlocksHelper.copySettingsOf(source).strength(1.0F, 1.0F).noCollission().noOcclusion(), WoodType.OAK); + super(FabricBlockSettings.copyOf(source).strength(1.0F, 1.0F).noCollission().noOcclusion(), WoodType.OAK); this.registerDefaultState(this.stateDefinition.any().setValue(ROTATION, 0).setValue(FLOOR, false).setValue(WATERLOGGED, false)); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseSlabBlock.java b/src/main/java/ru/bclib/blocks/BaseSlabBlock.java index ca7c5776..73c2e109 100644 --- a/src/main/java/ru/bclib/blocks/BaseSlabBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseSlabBlock.java @@ -5,8 +5,11 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -18,18 +21,16 @@ import net.minecraft.world.level.block.SlabBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.SlabType; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; -import ru.bclib.util.BlocksHelper; public class BaseSlabBlock extends SlabBlock implements BlockModelProvider { private final Block parent; public BaseSlabBlock(Block source) { - super(BlocksHelper.copySettingsOf(source)); + super(FabricBlockSettings.copyOf(source)); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseStairsBlock.java b/src/main/java/ru/bclib/blocks/BaseStairsBlock.java index 9cd63bd6..2f057e78 100644 --- a/src/main/java/ru/bclib/blocks/BaseStairsBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseStairsBlock.java @@ -5,8 +5,11 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -19,19 +22,17 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.Half; import net.minecraft.world.level.block.state.properties.StairsShape; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; -import ru.bclib.util.BlocksHelper; public class BaseStairsBlock extends StairBlock implements BlockModelProvider { private final Block parent; public BaseStairsBlock(Block source) { - super(source.defaultBlockState(), BlocksHelper.copySettingsOf(source)); + super(source.defaultBlockState(), FabricBlockSettings.copyOf(source)); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseStoneButtonBlock.java b/src/main/java/ru/bclib/blocks/BaseStoneButtonBlock.java index 12f631f8..aabc865b 100644 --- a/src/main/java/ru/bclib/blocks/BaseStoneButtonBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseStoneButtonBlock.java @@ -1,14 +1,14 @@ package ru.bclib.blocks; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.level.block.Block; -import ru.bclib.util.BlocksHelper; public class BaseStoneButtonBlock extends BaseButtonBlock { public BaseStoneButtonBlock(Block source) { - super(source, BlocksHelper.copySettingsOf(source).noOcclusion(), false); + super(source, FabricBlockSettings.copyOf(source).noOcclusion(), false); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseStripableLogBlock.java b/src/main/java/ru/bclib/blocks/BaseStripableLogBlock.java index 9f511fa6..a552e9fc 100644 --- a/src/main/java/ru/bclib/blocks/BaseStripableLogBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseStripableLogBlock.java @@ -1,5 +1,6 @@ package ru.bclib.blocks; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerPlayer; @@ -14,13 +15,12 @@ import net.minecraft.world.level.block.RotatedPillarBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.phys.BlockHitResult; -import ru.bclib.util.BlocksHelper; public class BaseStripableLogBlock extends BaseRotatedPillarBlock { private final Block striped; public BaseStripableLogBlock(MaterialColor color, Block striped) { - super(BlocksHelper.copySettingsOf(striped).mapColor(color)); + super(FabricBlockSettings.copyOf(striped).mapColor(color)); this.striped = striped; } diff --git a/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java b/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java index dcb12d09..fd0537c1 100644 --- a/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseTerrainBlock.java @@ -45,7 +45,6 @@ import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.sound.BlockSounds; -import ru.bclib.util.BlocksHelper; @SuppressWarnings("deprecation") public class BaseTerrainBlock extends BaseBlock { @@ -54,7 +53,7 @@ public class BaseTerrainBlock extends BaseBlock { private Block pathBlock; public BaseTerrainBlock(Block baseBlock, MaterialColor color) { - super(BlocksHelper.copySettingsOf(baseBlock).materialColor(color).sound(BlockSounds.TERRAIN_SOUND).randomTicks()); + super(FabricBlockSettings.copyOf(baseBlock).materialColor(color).sound(BlockSounds.TERRAIN_SOUND).randomTicks()); this.baseBlock = baseBlock; } diff --git a/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java b/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java index c3d52bab..b0167f0e 100644 --- a/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseTrapdoorBlock.java @@ -6,8 +6,11 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -18,18 +21,16 @@ import net.minecraft.world.level.block.TrapDoorBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.Half; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.IRenderTyped; -import ru.bclib.util.BlocksHelper; public class BaseTrapdoorBlock extends TrapDoorBlock implements IRenderTyped, BlockModelProvider { public BaseTrapdoorBlock(Block source) { - super(BlocksHelper.copySettingsOf(source).strength(3.0F, 3.0F).noOcclusion()); + super(FabricBlockSettings.copyOf(source).strength(3.0F, 3.0F).noOcclusion()); } @Override diff --git a/src/main/java/ru/bclib/blocks/BaseWallBlock.java b/src/main/java/ru/bclib/blocks/BaseWallBlock.java index cc653dd9..031f4d31 100644 --- a/src/main/java/ru/bclib/blocks/BaseWallBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseWallBlock.java @@ -5,8 +5,11 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.BlockModelRotation; import net.minecraft.client.resources.model.UnbakedModel; @@ -18,19 +21,17 @@ import net.minecraft.world.level.block.WallBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.WallSide; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; -import ru.bclib.util.BlocksHelper; public class BaseWallBlock extends WallBlock implements BlockModelProvider { private final Block parent; public BaseWallBlock(Block source) { - super(BlocksHelper.copySettingsOf(source).noOcclusion()); + super(FabricBlockSettings.copyOf(source).noOcclusion()); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java b/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java index 22398932..28bbe68e 100644 --- a/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseWeightedPlateBlock.java @@ -5,8 +5,11 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.client.renderer.block.model.BlockModel; import net.minecraft.client.resources.model.UnbakedModel; import net.minecraft.core.Registry; @@ -16,18 +19,16 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.WeightedPressurePlateBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; -import org.jetbrains.annotations.Nullable; import ru.bclib.client.models.BasePatterns; import ru.bclib.client.models.BlockModelProvider; import ru.bclib.client.models.ModelsHelper; import ru.bclib.client.models.PatternsHelper; -import ru.bclib.util.BlocksHelper; public class BaseWeightedPlateBlock extends WeightedPressurePlateBlock implements BlockModelProvider { private final Block parent; public BaseWeightedPlateBlock(Block source) { - super(15, BlocksHelper.copySettingsOf(source).noCollission().noOcclusion().requiresCorrectToolForDrops().strength(0.5F)); + super(15, FabricBlockSettings.copyOf(source).noCollission().noOcclusion().requiresCorrectToolForDrops().strength(0.5F)); this.parent = source; } diff --git a/src/main/java/ru/bclib/blocks/BaseWoodenButtonBlock.java b/src/main/java/ru/bclib/blocks/BaseWoodenButtonBlock.java index 49b2dc13..daab12c0 100644 --- a/src/main/java/ru/bclib/blocks/BaseWoodenButtonBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseWoodenButtonBlock.java @@ -1,14 +1,14 @@ package ru.bclib.blocks; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.level.block.Block; -import ru.bclib.util.BlocksHelper; public class BaseWoodenButtonBlock extends BaseButtonBlock { public BaseWoodenButtonBlock(Block source) { - super(source, BlocksHelper.copySettingsOf(source).strength(0.5F, 0.5F).noOcclusion(), true); + super(source, FabricBlockSettings.copyOf(source).strength(0.5F, 0.5F).noOcclusion(), true); } @Override diff --git a/src/main/java/ru/bclib/blocks/StripableBarkBlock.java b/src/main/java/ru/bclib/blocks/StripableBarkBlock.java index 312a2e2d..d0195177 100644 --- a/src/main/java/ru/bclib/blocks/StripableBarkBlock.java +++ b/src/main/java/ru/bclib/blocks/StripableBarkBlock.java @@ -1,5 +1,6 @@ package ru.bclib.blocks; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerPlayer; @@ -14,13 +15,12 @@ import net.minecraft.world.level.block.RotatedPillarBlock; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.phys.BlockHitResult; -import ru.bclib.util.BlocksHelper; public class StripableBarkBlock extends BaseBarkBlock { private final Block striped; public StripableBarkBlock(MaterialColor color, Block striped) { - super(BlocksHelper.copySettingsOf(striped).mapColor(color)); + super(FabricBlockSettings.copyOf(striped).mapColor(color)); this.striped = striped; } diff --git a/src/main/java/ru/bclib/util/BlocksHelper.java b/src/main/java/ru/bclib/util/BlocksHelper.java index 1b88b687..21b974f9 100644 --- a/src/main/java/ru/bclib/util/BlocksHelper.java +++ b/src/main/java/ru/bclib/util/BlocksHelper.java @@ -5,12 +5,6 @@ import java.util.Random; import com.google.common.collect.Maps; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.fabricmc.fabric.impl.object.builder.BlockSettingsInternals; -import net.fabricmc.fabric.impl.object.builder.FabricBlockInternals; -import net.fabricmc.fabric.mixin.object.builder.AbstractBlockAccessor; -import net.fabricmc.fabric.mixin.object.builder.AbstractBlockSettingsAccessor; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos.MutableBlockPos; import net.minecraft.core.Direction; @@ -195,25 +189,4 @@ public class BlocksHelper { return false; } } - - public static FabricBlockSettings copySettingsOf(Block block) { - FabricBlockSettings fbs = FabricBlockSettings.copyOf(block); - - AbstractBlockSettingsAccessor blockSettings = (AbstractBlockSettingsAccessor) ((AbstractBlockAccessor)block).getSettings(); - - //When settings are copied from a vanilla Block, extraData is not copied - //When a Block requires a tool, that data contains the Tag for the tool and is (by default) empty - //We will check if we created a copy of vanilla settings and if those settings require a tool. - //If so, we set the tool to a pickaxe. - if (!(blockSettings instanceof FabricBlockSettings)) { - BlockSettingsInternals blockInternals = (BlockSettingsInternals) blockSettings; - FabricBlockInternals.ExtraData extraData = blockInternals.getExtraData(); - - if (blockSettings.isToolRequired() && extraData == null) { - System.out.println("Adding PIckAXE to settings of " + block ); - fbs.breakByTool(FabricToolTags.PICKAXES); - } - } - return fbs; - } }