mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-12-14 01:53:47 +01:00
Fixed Bogey registry loading flywheel classes
This commit is contained in:
parent
e83fd736da
commit
49166f8dab
2 changed files with 54 additions and 32 deletions
|
@ -23,6 +23,8 @@ import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.fml.DistExecutor;
|
||||||
|
|
||||||
public class AllBogeyStyles {
|
public class AllBogeyStyles {
|
||||||
public static final Map<ResourceLocation, BogeyStyle> BOGEY_STYLES = new HashMap<>();
|
public static final Map<ResourceLocation, BogeyStyle> BOGEY_STYLES = new HashMap<>();
|
||||||
|
@ -36,10 +38,10 @@ public class AllBogeyStyles {
|
||||||
public static final String STANDARD_CYCLE_GROUP = "standard";
|
public static final String STANDARD_CYCLE_GROUP = "standard";
|
||||||
|
|
||||||
public static final BogeyStyle STANDARD =
|
public static final BogeyStyle STANDARD =
|
||||||
create("standard", STANDARD_CYCLE_GROUP).commonRenderer(CommonStandardBogeyRenderer::new)
|
create("standard", STANDARD_CYCLE_GROUP).commonRenderer(() -> CommonStandardBogeyRenderer::new)
|
||||||
.displayName(Components.translatable("create.bogey.style.standard"))
|
.displayName(Components.translatable("create.bogey.style.standard"))
|
||||||
.size(BogeySizes.SMALL, SmallStandardBogeyRenderer::new, AllBlocks.SMALL_BOGEY)
|
.size(BogeySizes.SMALL, () -> SmallStandardBogeyRenderer::new, AllBlocks.SMALL_BOGEY)
|
||||||
.size(BogeySizes.LARGE, LargeStandardBogeyRenderer::new, AllBlocks.LARGE_BOGEY)
|
.size(BogeySizes.LARGE, () -> LargeStandardBogeyRenderer::new, AllBlocks.LARGE_BOGEY)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
private static BogeyStyleBuilder create(String name, String cycleGroup) {
|
private static BogeyStyleBuilder create(String name, String cycleGroup) {
|
||||||
|
@ -53,7 +55,7 @@ public class AllBogeyStyles {
|
||||||
public static void register() {}
|
public static void register() {}
|
||||||
|
|
||||||
public static class BogeyStyleBuilder {
|
public static class BogeyStyleBuilder {
|
||||||
protected final Map<BogeySizes.BogeySize, BogeyStyle.SizeData> sizes = new HashMap<>();
|
protected final Map<BogeySizes.BogeySize, Supplier<BogeyStyle.SizeData>> sizes = new HashMap<>();
|
||||||
protected final ResourceLocation name;
|
protected final ResourceLocation name;
|
||||||
protected final ResourceLocation cycleGroup;
|
protected final ResourceLocation cycleGroup;
|
||||||
|
|
||||||
|
@ -84,15 +86,18 @@ public class AllBogeyStyles {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BogeyStyleBuilder size(BogeySizes.BogeySize size, Supplier<? extends BogeyRenderer> renderer,
|
public BogeyStyleBuilder size(BogeySizes.BogeySize size, Supplier<Supplier<? extends BogeyRenderer>> renderer,
|
||||||
BlockEntry<? extends AbstractBogeyBlock<?>> blockEntry) {
|
BlockEntry<? extends AbstractBogeyBlock<?>> blockEntry) {
|
||||||
this.size(size, renderer, blockEntry.getId());
|
this.size(size, renderer, blockEntry.getId());
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BogeyStyleBuilder size(BogeySizes.BogeySize size, Supplier<? extends BogeyRenderer> renderer,
|
public BogeyStyleBuilder size(BogeySizes.BogeySize size, Supplier<Supplier<? extends BogeyRenderer>> renderer,
|
||||||
ResourceLocation location) {
|
ResourceLocation location) {
|
||||||
this.sizes.put(size, new BogeyStyle.SizeData(location, renderer, renderer.get()));
|
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> {
|
||||||
|
this.sizes.put(size, () -> new BogeyStyle.SizeData(location, renderer.get(), renderer.get()
|
||||||
|
.get()));
|
||||||
|
});
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,16 +111,19 @@ public class AllBogeyStyles {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BogeyStyleBuilder commonRenderer(Supplier<? extends CommonRenderer> commonRenderer) {
|
public BogeyStyleBuilder commonRenderer(Supplier<Supplier<? extends CommonRenderer>> commonRenderer) {
|
||||||
this.commonRenderer = Optional.of(commonRenderer);
|
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> {
|
||||||
|
this.commonRenderer = Optional.of(commonRenderer.get());
|
||||||
|
});
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BogeyStyle build() {
|
public BogeyStyle build() {
|
||||||
BogeyStyle entry =
|
BogeyStyle entry = new BogeyStyle(name, cycleGroup, displayName, soundType, contactParticle, smokeParticle,
|
||||||
new BogeyStyle(name, cycleGroup, displayName, soundType, contactParticle, smokeParticle, defaultData, sizes, commonRenderer);
|
defaultData, sizes, commonRenderer);
|
||||||
BOGEY_STYLES.put(name, entry);
|
BOGEY_STYLES.put(name, entry);
|
||||||
CYCLE_GROUPS.computeIfAbsent(cycleGroup, l -> new HashMap<>()).put(name, entry);
|
CYCLE_GROUPS.computeIfAbsent(cycleGroup, l -> new HashMap<>())
|
||||||
|
.put(name, entry);
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,18 @@
|
||||||
package com.simibubi.create.content.logistics.trains.entity;
|
package com.simibubi.create.content.logistics.trains.entity;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import com.jozufozu.flywheel.api.MaterialManager;
|
import com.jozufozu.flywheel.api.MaterialManager;
|
||||||
import com.simibubi.create.AllBogeyStyles;
|
import com.simibubi.create.AllBogeyStyles;
|
||||||
import com.simibubi.create.AllSoundEvents;
|
import com.simibubi.create.AllSoundEvents;
|
||||||
import com.simibubi.create.content.logistics.trains.BogeyRenderer;
|
import com.simibubi.create.content.logistics.trains.BogeyRenderer;
|
||||||
|
|
||||||
import com.simibubi.create.content.logistics.trains.BogeyRenderer.CommonRenderer;
|
import com.simibubi.create.content.logistics.trains.BogeyRenderer.CommonRenderer;
|
||||||
import com.simibubi.create.content.logistics.trains.BogeySizes;
|
import com.simibubi.create.content.logistics.trains.BogeySizes;
|
||||||
|
|
||||||
|
@ -14,32 +22,32 @@ import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.sounds.SoundEvent;
|
import net.minecraft.sounds.SoundEvent;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
|
import net.minecraftforge.fml.DistExecutor;
|
||||||
import net.minecraftforge.registries.ForgeRegistries;
|
import net.minecraftforge.registries.ForgeRegistries;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
|
|
||||||
public class BogeyStyle {
|
public class BogeyStyle {
|
||||||
private final Optional<Supplier<? extends CommonRenderer>> commonRendererFactory;
|
|
||||||
|
|
||||||
public final ResourceLocation name;
|
public final ResourceLocation name;
|
||||||
public final ResourceLocation cycleGroup;
|
public final ResourceLocation cycleGroup;
|
||||||
private final Optional<CommonRenderer> commonRenderer;
|
|
||||||
private final Map<BogeySizes.BogeySize, SizeData> sizes;
|
|
||||||
public final Component displayName;
|
public final Component displayName;
|
||||||
public final ResourceLocation soundType;
|
public final ResourceLocation soundType;
|
||||||
public final ParticleOptions contactParticle;
|
public final ParticleOptions contactParticle;
|
||||||
public final ParticleOptions smokeParticle;
|
public final ParticleOptions smokeParticle;
|
||||||
public final CompoundTag defaultData;
|
public final CompoundTag defaultData;
|
||||||
|
|
||||||
|
private Optional<Supplier<? extends CommonRenderer>> commonRendererFactory;
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
private Map<BogeySizes.BogeySize, SizeData> sizes;
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
private Optional<CommonRenderer> commonRenderer;
|
||||||
|
|
||||||
public BogeyStyle(ResourceLocation name, ResourceLocation cycleGroup, Component displayName, ResourceLocation soundType, ParticleOptions contactParticle, ParticleOptions smokeParticle,
|
public BogeyStyle(ResourceLocation name, ResourceLocation cycleGroup, Component displayName, ResourceLocation soundType, ParticleOptions contactParticle, ParticleOptions smokeParticle,
|
||||||
CompoundTag defaultData, Map<BogeySizes.BogeySize, SizeData> sizes, Optional<Supplier<? extends CommonRenderer>> commonRenderer) {
|
CompoundTag defaultData, Map<BogeySizes.BogeySize, Supplier<SizeData>> sizes, Optional<Supplier<? extends CommonRenderer>> commonRenderer) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.cycleGroup = cycleGroup;
|
this.cycleGroup = cycleGroup;
|
||||||
this.displayName = displayName;
|
this.displayName = displayName;
|
||||||
|
@ -48,10 +56,13 @@ public class BogeyStyle {
|
||||||
this.smokeParticle = smokeParticle;
|
this.smokeParticle = smokeParticle;
|
||||||
this.defaultData = defaultData;
|
this.defaultData = defaultData;
|
||||||
|
|
||||||
this.sizes = sizes;
|
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> {
|
||||||
|
this.sizes = new HashMap<>();
|
||||||
this.commonRendererFactory = commonRenderer;
|
sizes.forEach((k, v) -> this.sizes.put(k, v.get()));
|
||||||
this.commonRenderer = commonRenderer.map(Supplier::get);
|
|
||||||
|
this.commonRendererFactory = commonRenderer;
|
||||||
|
this.commonRenderer = commonRenderer.map(Supplier::get);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<ResourceLocation, BogeyStyle> getCycleGroup() {
|
public Map<ResourceLocation, BogeyStyle> getCycleGroup() {
|
||||||
|
@ -81,10 +92,12 @@ public class BogeyStyle {
|
||||||
return entry.getMainEvent();
|
return entry.getMainEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
public BogeyRenderer createRendererInstance(BogeySizes.BogeySize size) {
|
public BogeyRenderer createRendererInstance(BogeySizes.BogeySize size) {
|
||||||
return this.sizes.get(size).createRenderInstance();
|
return this.sizes.get(size).createRenderInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
public BogeyRenderer getInWorldRenderInstance(BogeySizes.BogeySize size) {
|
public BogeyRenderer getInWorldRenderInstance(BogeySizes.BogeySize size) {
|
||||||
SizeData sizeData = this.sizes.get(size);
|
SizeData sizeData = this.sizes.get(size);
|
||||||
return sizeData != null ? sizeData.getInWorldInstance() : BackupBogeyRenderer.INSTANCE;
|
return sizeData != null ? sizeData.getInWorldInstance() : BackupBogeyRenderer.INSTANCE;
|
||||||
|
@ -102,6 +115,7 @@ public class BogeyStyle {
|
||||||
return new BogeyInstance(bogey, this, size, materialManager);
|
return new BogeyInstance(bogey, this, size, materialManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
public record SizeData(ResourceLocation block, Supplier<? extends BogeyRenderer> rendererFactory, BogeyRenderer instance) {
|
public record SizeData(ResourceLocation block, Supplier<? extends BogeyRenderer> rendererFactory, BogeyRenderer instance) {
|
||||||
public BogeyRenderer createRenderInstance() {
|
public BogeyRenderer createRenderInstance() {
|
||||||
return rendererFactory.get();
|
return rendererFactory.get();
|
||||||
|
|
Loading…
Reference in a new issue