MultiPartBuilder.create returns an Instance not a globa Object (improves thread safety, fixes paulevsGitch/BetterEnd#316)

This commit is contained in:
Frank 2021-10-18 19:26:10 +02:00
parent 06df39445c
commit a52b18ba9b

View file

@ -1,6 +1,11 @@
package ru.bclib.client.models; package ru.bclib.client.models;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.mojang.math.Transformation; import com.mojang.math.Transformation;
import net.fabricmc.api.EnvType; import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment; import net.fabricmc.api.Environment;
@ -17,10 +22,6 @@ import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.StateDefinition;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
@Environment(EnvType.CLIENT) @Environment(EnvType.CLIENT)
public class ModelsHelper { public class ModelsHelper {
public static BlockModel fromPattern(Optional<String> pattern) { public static BlockModel fromPattern(Optional<String> pattern) {
@ -88,18 +89,21 @@ public class ModelsHelper {
public static class MultiPartBuilder { public static class MultiPartBuilder {
private final static MultiPartBuilder BUILDER = new MultiPartBuilder(); //private final static MultiPartBuilder BUILDER = new MultiPartBuilder();
public static MultiPartBuilder create(StateDefinition<Block, BlockState> stateDefinition) { public static MultiPartBuilder create(StateDefinition<Block, BlockState> stateDefinition) {
BUILDER.stateDefinition = stateDefinition; // BUILDER.stateDefinition = stateDefinition;
BUILDER.modelParts.clear(); //BUILDER.modelParts.clear();
return BUILDER; // return BUILDER;
return new MultiPartBuilder(stateDefinition);
} }
private final List<ModelPart> modelParts = Lists.newArrayList(); private final List<ModelPart> modelParts = Lists.newArrayList();
private StateDefinition<Block, BlockState> stateDefinition; private StateDefinition<Block, BlockState> stateDefinition;
private MultiPartBuilder() {} private MultiPartBuilder(StateDefinition<Block, BlockState> stateDefinition) {
this.stateDefinition = stateDefinition;
}
public ModelPart part(ResourceLocation modelId) { public ModelPart part(ResourceLocation modelId) {
ModelPart part = new ModelPart(modelId); ModelPart part = new ModelPart(modelId);