mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-12-16 02:53:42 +01:00
Miscellaneous refactors
- Refactor custom rendered items; The renderer now creates the model instead of the other way around - Only tick wrench cog rotation and linked controller renderer if client is not paused - Move all model swapping code from CreateClient to ModelSwapper - Register client resource reload listener before initial resource reload - Use TextureStitchEvent.Post event instead of resource reload listener for filling sprites of SpriteShiftEntries - Reuse Random instance in PartialItemModelRenderer - Make all config fields final - Merge package foundation.renderState into foundation.render - Move BreakProgressHook from package foundation to foundation.block - Rename ResourceReloadHandler to ClientResourceReloadListener - Rename ProperDirectionalBlock to WrenchableDirectionalBlock
This commit is contained in:
parent
2bd10af1bc
commit
9870431db8
87 changed files with 498 additions and 485 deletions
|
@ -11,7 +11,6 @@ import com.simibubi.create.foundation.utility.Lang;
|
||||||
|
|
||||||
import net.minecraft.item.DyeColor;
|
import net.minecraft.item.DyeColor;
|
||||||
import net.minecraft.util.Direction;
|
import net.minecraft.util.Direction;
|
||||||
import net.minecraft.util.ResourceLocation;
|
|
||||||
|
|
||||||
public class AllBlockPartials {
|
public class AllBlockPartials {
|
||||||
|
|
||||||
|
@ -145,14 +144,15 @@ public class AllBlockPartials {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PartialModel getEntity(String path) {
|
private static PartialModel getEntity(String path) {
|
||||||
return new PartialModel(new ResourceLocation(Create.ID, "entity/" + path));
|
return new PartialModel(Create.asResource("entity/" + path));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PartialModel get(String path) {
|
private static PartialModel get(String path) {
|
||||||
return new PartialModel(new ResourceLocation(Create.ID, "block/" + path));
|
return new PartialModel(Create.asResource("block/" + path));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void clientInit() {
|
public static void init() {
|
||||||
// init static fields
|
// init static fields
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlo
|
||||||
import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorItem;
|
import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorItem;
|
||||||
import com.simibubi.create.content.contraptions.relays.gearbox.VerticalGearboxItem;
|
import com.simibubi.create.content.contraptions.relays.gearbox.VerticalGearboxItem;
|
||||||
import com.simibubi.create.content.contraptions.wrench.WrenchItem;
|
import com.simibubi.create.content.contraptions.wrench.WrenchItem;
|
||||||
import com.simibubi.create.content.contraptions.wrench.WrenchModel;
|
import com.simibubi.create.content.contraptions.wrench.WrenchItemRenderer;
|
||||||
import com.simibubi.create.content.curiosities.BuildersTeaItem;
|
import com.simibubi.create.content.curiosities.BuildersTeaItem;
|
||||||
import com.simibubi.create.content.curiosities.ChromaticCompoundColor;
|
import com.simibubi.create.content.curiosities.ChromaticCompoundColor;
|
||||||
import com.simibubi.create.content.curiosities.ChromaticCompoundItem;
|
import com.simibubi.create.content.curiosities.ChromaticCompoundItem;
|
||||||
|
@ -34,18 +34,18 @@ import com.simibubi.create.content.curiosities.armor.CopperBacktankItem;
|
||||||
import com.simibubi.create.content.curiosities.armor.DivingBootsItem;
|
import com.simibubi.create.content.curiosities.armor.DivingBootsItem;
|
||||||
import com.simibubi.create.content.curiosities.armor.DivingHelmetItem;
|
import com.simibubi.create.content.curiosities.armor.DivingHelmetItem;
|
||||||
import com.simibubi.create.content.curiosities.symmetry.SymmetryWandItem;
|
import com.simibubi.create.content.curiosities.symmetry.SymmetryWandItem;
|
||||||
import com.simibubi.create.content.curiosities.symmetry.client.SymmetryWandModel;
|
import com.simibubi.create.content.curiosities.symmetry.client.SymmetryWandItemRenderer;
|
||||||
import com.simibubi.create.content.curiosities.tools.BlueprintItem;
|
import com.simibubi.create.content.curiosities.tools.BlueprintItem;
|
||||||
import com.simibubi.create.content.curiosities.tools.ExtendoGripItem;
|
import com.simibubi.create.content.curiosities.tools.ExtendoGripItem;
|
||||||
import com.simibubi.create.content.curiosities.tools.ExtendoGripModel;
|
import com.simibubi.create.content.curiosities.tools.ExtendoGripItemRenderer;
|
||||||
import com.simibubi.create.content.curiosities.tools.SandPaperItem;
|
import com.simibubi.create.content.curiosities.tools.SandPaperItem;
|
||||||
import com.simibubi.create.content.curiosities.tools.SandPaperItemRenderer.SandPaperModel;
|
import com.simibubi.create.content.curiosities.tools.SandPaperItemRenderer;
|
||||||
import com.simibubi.create.content.curiosities.weapons.PotatoCannonItem;
|
import com.simibubi.create.content.curiosities.weapons.PotatoCannonItem;
|
||||||
import com.simibubi.create.content.curiosities.weapons.PotatoCannonModel;
|
import com.simibubi.create.content.curiosities.weapons.PotatoCannonItemRenderer;
|
||||||
import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperItem;
|
import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperItem;
|
||||||
import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperModel;
|
import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperItemRenderer;
|
||||||
import com.simibubi.create.content.logistics.item.LinkedControllerItem;
|
import com.simibubi.create.content.logistics.item.LinkedControllerItem;
|
||||||
import com.simibubi.create.content.logistics.item.LinkedControllerModel;
|
import com.simibubi.create.content.logistics.item.LinkedControllerItemRenderer;
|
||||||
import com.simibubi.create.content.logistics.item.filter.FilterItem;
|
import com.simibubi.create.content.logistics.item.filter.FilterItem;
|
||||||
import com.simibubi.create.content.schematics.item.SchematicAndQuillItem;
|
import com.simibubi.create.content.schematics.item.SchematicAndQuillItem;
|
||||||
import com.simibubi.create.content.schematics.item.SchematicItem;
|
import com.simibubi.create.content.schematics.item.SchematicItem;
|
||||||
|
@ -227,19 +227,19 @@ public class AllItems {
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static final ItemEntry<SandPaperItem> SAND_PAPER = REGISTRATE.item("sand_paper", SandPaperItem::new)
|
public static final ItemEntry<SandPaperItem> SAND_PAPER = REGISTRATE.item("sand_paper", SandPaperItem::new)
|
||||||
.transform(CreateRegistrate.customRenderedItem(() -> SandPaperModel::new))
|
.transform(CreateRegistrate.customRenderedItem(() -> SandPaperItemRenderer::new))
|
||||||
.tag(AllTags.AllItemTags.SANDPAPER.tag)
|
.tag(AllTags.AllItemTags.SANDPAPER.tag)
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static final ItemEntry<SandPaperItem> RED_SAND_PAPER = REGISTRATE.item("red_sand_paper", SandPaperItem::new)
|
public static final ItemEntry<SandPaperItem> RED_SAND_PAPER = REGISTRATE.item("red_sand_paper", SandPaperItem::new)
|
||||||
.transform(CreateRegistrate.customRenderedItem(() -> SandPaperModel::new))
|
.transform(CreateRegistrate.customRenderedItem(() -> SandPaperItemRenderer::new))
|
||||||
.tag(AllTags.AllItemTags.SANDPAPER.tag)
|
.tag(AllTags.AllItemTags.SANDPAPER.tag)
|
||||||
.onRegister(s -> TooltipHelper.referTo(s, SAND_PAPER))
|
.onRegister(s -> TooltipHelper.referTo(s, SAND_PAPER))
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static final ItemEntry<WrenchItem> WRENCH = REGISTRATE.item("wrench", WrenchItem::new)
|
public static final ItemEntry<WrenchItem> WRENCH = REGISTRATE.item("wrench", WrenchItem::new)
|
||||||
.properties(p -> p.stacksTo(1))
|
.properties(p -> p.stacksTo(1))
|
||||||
.transform(CreateRegistrate.customRenderedItem(() -> WrenchModel::new))
|
.transform(CreateRegistrate.customRenderedItem(() -> WrenchItemRenderer::new))
|
||||||
.model(AssetLookup.itemModelWithPartials())
|
.model(AssetLookup.itemModelWithPartials())
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
|
@ -264,32 +264,32 @@ public class AllItems {
|
||||||
public static final ItemEntry<LinkedControllerItem> LINKED_CONTROLLER =
|
public static final ItemEntry<LinkedControllerItem> LINKED_CONTROLLER =
|
||||||
REGISTRATE.item("linked_controller", LinkedControllerItem::new)
|
REGISTRATE.item("linked_controller", LinkedControllerItem::new)
|
||||||
.properties(p -> p.stacksTo(1))
|
.properties(p -> p.stacksTo(1))
|
||||||
.transform(CreateRegistrate.customRenderedItem(() -> LinkedControllerModel::new))
|
.transform(CreateRegistrate.customRenderedItem(() -> LinkedControllerItemRenderer::new))
|
||||||
.model(AssetLookup.itemModelWithPartials())
|
.model(AssetLookup.itemModelWithPartials())
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static final ItemEntry<PotatoCannonItem> POTATO_CANNON =
|
public static final ItemEntry<PotatoCannonItem> POTATO_CANNON =
|
||||||
REGISTRATE.item("potato_cannon", PotatoCannonItem::new)
|
REGISTRATE.item("potato_cannon", PotatoCannonItem::new)
|
||||||
.properties(p -> p.stacksTo(1))
|
.properties(p -> p.stacksTo(1))
|
||||||
.transform(CreateRegistrate.customRenderedItem(() -> PotatoCannonModel::new))
|
.transform(CreateRegistrate.customRenderedItem(() -> PotatoCannonItemRenderer::new))
|
||||||
.model(AssetLookup.itemModelWithPartials())
|
.model(AssetLookup.itemModelWithPartials())
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static final ItemEntry<ExtendoGripItem> EXTENDO_GRIP = REGISTRATE.item("extendo_grip", ExtendoGripItem::new)
|
public static final ItemEntry<ExtendoGripItem> EXTENDO_GRIP = REGISTRATE.item("extendo_grip", ExtendoGripItem::new)
|
||||||
.transform(CreateRegistrate.customRenderedItem(() -> ExtendoGripModel::new))
|
.transform(CreateRegistrate.customRenderedItem(() -> ExtendoGripItemRenderer::new))
|
||||||
.model(AssetLookup.itemModelWithPartials())
|
.model(AssetLookup.itemModelWithPartials())
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static final ItemEntry<SymmetryWandItem> WAND_OF_SYMMETRY =
|
public static final ItemEntry<SymmetryWandItem> WAND_OF_SYMMETRY =
|
||||||
REGISTRATE.item("wand_of_symmetry", SymmetryWandItem::new)
|
REGISTRATE.item("wand_of_symmetry", SymmetryWandItem::new)
|
||||||
.transform(CreateRegistrate.customRenderedItem(() -> SymmetryWandModel::new))
|
.transform(CreateRegistrate.customRenderedItem(() -> SymmetryWandItemRenderer::new))
|
||||||
.model(AssetLookup.itemModelWithPartials())
|
.model(AssetLookup.itemModelWithPartials())
|
||||||
.register();
|
.register();
|
||||||
|
|
||||||
public static final ItemEntry<WorldshaperItem> WORLDSHAPER =
|
public static final ItemEntry<WorldshaperItem> WORLDSHAPER =
|
||||||
REGISTRATE.item("handheld_worldshaper", WorldshaperItem::new)
|
REGISTRATE.item("handheld_worldshaper", WorldshaperItem::new)
|
||||||
.properties(p -> p.rarity(Rarity.EPIC))
|
.properties(p -> p.rarity(Rarity.EPIC))
|
||||||
.transform(CreateRegistrate.customRenderedItem(() -> WorldshaperModel::new))
|
.transform(CreateRegistrate.customRenderedItem(() -> WorldshaperItemRenderer::new))
|
||||||
.lang("Creative Worldshaper")
|
.lang("Creative Worldshaper")
|
||||||
.model(AssetLookup.itemModelWithPartials())
|
.model(AssetLookup.itemModelWithPartials())
|
||||||
.register();
|
.register();
|
||||||
|
|
|
@ -80,6 +80,12 @@ public class Create {
|
||||||
private static final NonNullLazyValue<CreateRegistrate> REGISTRATE = CreateRegistrate.lazy(ID);
|
private static final NonNullLazyValue<CreateRegistrate> REGISTRATE = CreateRegistrate.lazy(ID);
|
||||||
|
|
||||||
public Create() {
|
public Create() {
|
||||||
|
onCtor();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void onCtor() {
|
||||||
|
ModLoadingContext modLoadingContext = ModLoadingContext.get();
|
||||||
|
|
||||||
AllSoundEvents.prepare();
|
AllSoundEvents.prepare();
|
||||||
AllBlocks.register();
|
AllBlocks.register();
|
||||||
AllItems.register();
|
AllItems.register();
|
||||||
|
@ -92,7 +98,7 @@ public class Create {
|
||||||
AllMovementBehaviours.register();
|
AllMovementBehaviours.register();
|
||||||
AllWorldFeatures.register();
|
AllWorldFeatures.register();
|
||||||
AllEnchantments.register();
|
AllEnchantments.register();
|
||||||
AllConfigs.register(ModLoadingContext.get());
|
AllConfigs.register(modLoadingContext);
|
||||||
BlockSpoutingBehaviour.register();
|
BlockSpoutingBehaviour.register();
|
||||||
|
|
||||||
ForgeMod.enableMilkFluid();
|
ForgeMod.enableMilkFluid();
|
||||||
|
@ -109,12 +115,13 @@ public class Create {
|
||||||
modEventBus.addGenericListener(SoundEvent.class, AllSoundEvents::register);
|
modEventBus.addGenericListener(SoundEvent.class, AllSoundEvents::register);
|
||||||
modEventBus.addListener(AllConfigs::onLoad);
|
modEventBus.addListener(AllConfigs::onLoad);
|
||||||
modEventBus.addListener(AllConfigs::onReload);
|
modEventBus.addListener(AllConfigs::onReload);
|
||||||
modEventBus.addListener(EventPriority.LOWEST, this::gatherData);
|
modEventBus.addListener(EventPriority.LOWEST, Create::gatherData);
|
||||||
|
|
||||||
forgeEventBus.addListener(EventPriority.HIGH, Create::onBiomeLoad);
|
forgeEventBus.addListener(EventPriority.HIGH, Create::onBiomeLoad);
|
||||||
forgeEventBus.register(CHUNK_UTIL);
|
forgeEventBus.register(CHUNK_UTIL);
|
||||||
|
|
||||||
DistExecutor.unsafeRunWhenOn(Dist.CLIENT,
|
DistExecutor.unsafeRunWhenOn(Dist.CLIENT,
|
||||||
() -> () -> CreateClient.addClientListeners(forgeEventBus, modEventBus));
|
() -> () -> CreateClient.onCtorClient(modEventBus, forgeEventBus));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void init(final FMLCommonSetupEvent event) {
|
public static void init(final FMLCommonSetupEvent event) {
|
||||||
|
@ -132,7 +139,7 @@ public class Create {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void gatherData(GatherDataEvent event) {
|
public static void gatherData(GatherDataEvent event) {
|
||||||
DataGenerator gen = event.getGenerator();
|
DataGenerator gen = event.getGenerator();
|
||||||
gen.addProvider(new AllAdvancements(gen));
|
gen.addProvider(new AllAdvancements(gen));
|
||||||
gen.addProvider(new LangMerger(gen));
|
gen.addProvider(new LangMerger(gen));
|
||||||
|
|
|
@ -1,10 +1,5 @@
|
||||||
package com.simibubi.create;
|
package com.simibubi.create;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
|
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
|
||||||
import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher;
|
import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher;
|
||||||
import com.simibubi.create.content.contraptions.components.structureMovement.render.SBBContraptionManager;
|
import com.simibubi.create.content.contraptions.components.structureMovement.render.SBBContraptionManager;
|
||||||
|
@ -17,34 +12,25 @@ import com.simibubi.create.content.schematics.ClientSchematicLoader;
|
||||||
import com.simibubi.create.content.schematics.client.SchematicAndQuillHandler;
|
import com.simibubi.create.content.schematics.client.SchematicAndQuillHandler;
|
||||||
import com.simibubi.create.content.schematics.client.SchematicHandler;
|
import com.simibubi.create.content.schematics.client.SchematicHandler;
|
||||||
import com.simibubi.create.events.ClientEvents;
|
import com.simibubi.create.events.ClientEvents;
|
||||||
import com.simibubi.create.foundation.ResourceReloadHandler;
|
import com.simibubi.create.foundation.ClientResourceReloadListener;
|
||||||
import com.simibubi.create.foundation.block.render.CustomBlockModels;
|
|
||||||
import com.simibubi.create.foundation.block.render.SpriteShifter;
|
import com.simibubi.create.foundation.block.render.SpriteShifter;
|
||||||
import com.simibubi.create.foundation.config.AllConfigs;
|
import com.simibubi.create.foundation.config.AllConfigs;
|
||||||
import com.simibubi.create.foundation.gui.UIRenderHelper;
|
import com.simibubi.create.foundation.gui.UIRenderHelper;
|
||||||
import com.simibubi.create.foundation.item.render.CustomItemModels;
|
|
||||||
import com.simibubi.create.foundation.item.render.CustomRenderedItems;
|
|
||||||
import com.simibubi.create.foundation.ponder.content.PonderIndex;
|
import com.simibubi.create.foundation.ponder.content.PonderIndex;
|
||||||
import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
|
import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
|
||||||
import com.simibubi.create.foundation.render.AllMaterialSpecs;
|
import com.simibubi.create.foundation.render.AllMaterialSpecs;
|
||||||
import com.simibubi.create.foundation.render.CreateContexts;
|
import com.simibubi.create.foundation.render.CreateContexts;
|
||||||
import com.simibubi.create.foundation.render.SuperByteBufferCache;
|
import com.simibubi.create.foundation.render.SuperByteBufferCache;
|
||||||
|
import com.simibubi.create.foundation.utility.ModelSwapper;
|
||||||
import com.simibubi.create.foundation.utility.ghost.GhostBlocks;
|
import com.simibubi.create.foundation.utility.ghost.GhostBlocks;
|
||||||
import com.simibubi.create.foundation.utility.outliner.Outliner;
|
import com.simibubi.create.foundation.utility.outliner.Outliner;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.gui.screen.Screen;
|
import net.minecraft.client.gui.screen.Screen;
|
||||||
import net.minecraft.client.renderer.BlockModelShapes;
|
|
||||||
import net.minecraft.client.renderer.entity.EntityRendererManager;
|
import net.minecraft.client.renderer.entity.EntityRendererManager;
|
||||||
import net.minecraft.client.renderer.model.IBakedModel;
|
|
||||||
import net.minecraft.client.renderer.model.ModelResourceLocation;
|
|
||||||
import net.minecraft.client.settings.GraphicsFanciness;
|
import net.minecraft.client.settings.GraphicsFanciness;
|
||||||
import net.minecraft.inventory.container.PlayerContainer;
|
|
||||||
import net.minecraft.item.Item;
|
|
||||||
import net.minecraft.resources.IReloadableResourceManager;
|
import net.minecraft.resources.IReloadableResourceManager;
|
||||||
import net.minecraft.resources.IResourceManager;
|
import net.minecraft.resources.IResourceManager;
|
||||||
import net.minecraft.util.ResourceLocation;
|
|
||||||
import net.minecraft.util.text.ChatType;
|
import net.minecraft.util.text.ChatType;
|
||||||
import net.minecraft.util.text.IFormattableTextComponent;
|
import net.minecraft.util.text.IFormattableTextComponent;
|
||||||
import net.minecraft.util.text.StringTextComponent;
|
import net.minecraft.util.text.StringTextComponent;
|
||||||
|
@ -52,55 +38,57 @@ import net.minecraft.util.text.TextComponentUtils;
|
||||||
import net.minecraft.util.text.TextFormatting;
|
import net.minecraft.util.text.TextFormatting;
|
||||||
import net.minecraft.util.text.event.ClickEvent;
|
import net.minecraft.util.text.event.ClickEvent;
|
||||||
import net.minecraft.util.text.event.HoverEvent;
|
import net.minecraft.util.text.event.HoverEvent;
|
||||||
import net.minecraftforge.client.event.ModelBakeEvent;
|
|
||||||
import net.minecraftforge.client.event.ModelRegistryEvent;
|
|
||||||
import net.minecraftforge.client.event.TextureStitchEvent;
|
|
||||||
import net.minecraftforge.client.model.ModelLoader;
|
|
||||||
import net.minecraftforge.eventbus.api.IEventBus;
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
||||||
|
|
||||||
public class CreateClient {
|
public class CreateClient {
|
||||||
|
|
||||||
public static final ClientSchematicLoader SCHEMATIC_SENDER = new ClientSchematicLoader();
|
|
||||||
public static final SchematicHandler SCHEMATIC_HANDLER = new SchematicHandler();
|
|
||||||
public static final SchematicAndQuillHandler SCHEMATIC_AND_QUILL_HANDLER = new SchematicAndQuillHandler();
|
|
||||||
public static final SuperByteBufferCache BUFFER_CACHE = new SuperByteBufferCache();
|
public static final SuperByteBufferCache BUFFER_CACHE = new SuperByteBufferCache();
|
||||||
public static final Outliner OUTLINER = new Outliner();
|
public static final Outliner OUTLINER = new Outliner();
|
||||||
public static final GhostBlocks GHOST_BLOCKS = new GhostBlocks();
|
public static final GhostBlocks GHOST_BLOCKS = new GhostBlocks();
|
||||||
public static final Screen EMPTY_SCREEN = new Screen(new StringTextComponent("")) {};
|
public static final Screen EMPTY_SCREEN = new Screen(new StringTextComponent("")) {};
|
||||||
|
public static final ModelSwapper MODEL_SWAPPER = new ModelSwapper();
|
||||||
|
public static final CasingConnectivity CASING_CONNECTIVITY = new CasingConnectivity();
|
||||||
|
|
||||||
|
public static final ClientSchematicLoader SCHEMATIC_SENDER = new ClientSchematicLoader();
|
||||||
|
public static final SchematicHandler SCHEMATIC_HANDLER = new SchematicHandler();
|
||||||
|
public static final SchematicAndQuillHandler SCHEMATIC_AND_QUILL_HANDLER = new SchematicAndQuillHandler();
|
||||||
|
|
||||||
public static final ZapperRenderHandler ZAPPER_RENDER_HANDLER = new ZapperRenderHandler();
|
public static final ZapperRenderHandler ZAPPER_RENDER_HANDLER = new ZapperRenderHandler();
|
||||||
public static final PotatoCannonRenderHandler POTATO_CANNON_RENDER_HANDLER = new PotatoCannonRenderHandler();
|
public static final PotatoCannonRenderHandler POTATO_CANNON_RENDER_HANDLER = new PotatoCannonRenderHandler();
|
||||||
public static final SoulPulseEffectHandler SOUL_PULSE_EFFECT_HANDLER = new SoulPulseEffectHandler();
|
public static final SoulPulseEffectHandler SOUL_PULSE_EFFECT_HANDLER = new SoulPulseEffectHandler();
|
||||||
|
|
||||||
private static CustomBlockModels customBlockModels;
|
public static final ClientResourceReloadListener RESOURCE_RELOAD_LISTENER = new ClientResourceReloadListener();
|
||||||
private static CustomItemModels customItemModels;
|
|
||||||
private static CustomRenderedItems customRenderedItems;
|
|
||||||
private static CasingConnectivity casingConnectivity;
|
|
||||||
|
|
||||||
public static void addClientListeners(IEventBus forgeEventBus, IEventBus modEventBus) {
|
public static void onCtorClient(IEventBus modEventBus, IEventBus forgeEventBus) {
|
||||||
modEventBus.addListener(CreateClient::clientInit);
|
modEventBus.addListener(CreateClient::clientInit);
|
||||||
modEventBus.addListener(CreateClient::onTextureStitch);
|
|
||||||
modEventBus.addListener(CreateClient::onModelRegistry);
|
|
||||||
modEventBus.addListener(CreateClient::onModelBake);
|
|
||||||
modEventBus.addListener(AllParticleTypes::registerFactories);
|
|
||||||
modEventBus.addListener(ClientEvents::loadCompleted);
|
modEventBus.addListener(ClientEvents::loadCompleted);
|
||||||
|
modEventBus.addListener(SpriteShifter::onTextureStitchPre);
|
||||||
|
modEventBus.addListener(SpriteShifter::onTextureStitchPost);
|
||||||
|
modEventBus.addListener(AllParticleTypes::registerFactories);
|
||||||
modEventBus.addListener(CreateContexts::flwInit);
|
modEventBus.addListener(CreateContexts::flwInit);
|
||||||
modEventBus.addListener(AllMaterialSpecs::flwInit);
|
modEventBus.addListener(AllMaterialSpecs::flwInit);
|
||||||
modEventBus.addListener(ContraptionRenderDispatcher::gatherContext);
|
modEventBus.addListener(ContraptionRenderDispatcher::gatherContext);
|
||||||
|
|
||||||
ZAPPER_RENDER_HANDLER.register(forgeEventBus);
|
MODEL_SWAPPER.registerListeners(modEventBus);
|
||||||
POTATO_CANNON_RENDER_HANDLER.register(forgeEventBus);
|
|
||||||
|
ZAPPER_RENDER_HANDLER.registerListeners(forgeEventBus);
|
||||||
|
POTATO_CANNON_RENDER_HANDLER.registerListeners(forgeEventBus);
|
||||||
|
|
||||||
|
IResourceManager resourceManager = Minecraft.getInstance()
|
||||||
|
.getResourceManager();
|
||||||
|
if (resourceManager instanceof IReloadableResourceManager)
|
||||||
|
((IReloadableResourceManager) resourceManager).registerReloadListener(RESOURCE_RELOAD_LISTENER);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void clientInit(FMLClientSetupEvent event) {
|
public static void clientInit(final FMLClientSetupEvent event) {
|
||||||
BUFFER_CACHE.registerCompartment(KineticTileEntityRenderer.KINETIC_TILE);
|
BUFFER_CACHE.registerCompartment(KineticTileEntityRenderer.KINETIC_TILE);
|
||||||
BUFFER_CACHE.registerCompartment(SBBContraptionManager.CONTRAPTION, 20);
|
BUFFER_CACHE.registerCompartment(SBBContraptionManager.CONTRAPTION, 20);
|
||||||
BUFFER_CACHE.registerCompartment(WorldSectionElement.DOC_WORLD_SECTION, 20);
|
BUFFER_CACHE.registerCompartment(WorldSectionElement.DOC_WORLD_SECTION, 20);
|
||||||
|
|
||||||
AllKeys.register();
|
AllKeys.register();
|
||||||
// AllFluids.assignRenderLayers();
|
// AllFluids.assignRenderLayers();
|
||||||
AllBlockPartials.clientInit();
|
AllBlockPartials.init();
|
||||||
AllStitchedTextures.init();
|
AllStitchedTextures.init();
|
||||||
|
|
||||||
PonderIndex.register();
|
PonderIndex.register();
|
||||||
|
@ -109,102 +97,15 @@ public class CreateClient {
|
||||||
UIRenderHelper.init();
|
UIRenderHelper.init();
|
||||||
|
|
||||||
event.enqueueWork(() -> {
|
event.enqueueWork(() -> {
|
||||||
IResourceManager resourceManager = Minecraft.getInstance()
|
|
||||||
.getResourceManager();
|
|
||||||
if (resourceManager instanceof IReloadableResourceManager)
|
|
||||||
((IReloadableResourceManager) resourceManager).registerReloadListener(new ResourceReloadHandler());
|
|
||||||
|
|
||||||
registerLayerRenderers(Minecraft.getInstance()
|
registerLayerRenderers(Minecraft.getInstance()
|
||||||
.getEntityRenderDispatcher());
|
.getEntityRenderDispatcher());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void onTextureStitch(TextureStitchEvent.Pre event) {
|
|
||||||
if (!event.getMap()
|
|
||||||
.location()
|
|
||||||
.equals(PlayerContainer.BLOCK_ATLAS))
|
|
||||||
return;
|
|
||||||
SpriteShifter.getAllTargetSprites()
|
|
||||||
.forEach(event::addSprite);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void onModelRegistry(ModelRegistryEvent event) {
|
|
||||||
getCustomRenderedItems().foreach((item, modelFunc) -> modelFunc.apply(null)
|
|
||||||
.getModelLocations()
|
|
||||||
.forEach(ModelLoader::addSpecialModel));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void onModelBake(ModelBakeEvent event) {
|
|
||||||
Map<ResourceLocation, IBakedModel> modelRegistry = event.getModelRegistry();
|
|
||||||
|
|
||||||
getCustomBlockModels()
|
|
||||||
.foreach((block, modelFunc) -> swapModels(modelRegistry, getAllBlockStateModelLocations(block), modelFunc));
|
|
||||||
getCustomItemModels()
|
|
||||||
.foreach((item, modelFunc) -> swapModels(modelRegistry, getItemModelLocation(item), modelFunc));
|
|
||||||
getCustomRenderedItems().foreach((item, modelFunc) -> {
|
|
||||||
swapModels(modelRegistry, getItemModelLocation(item), m -> modelFunc.apply(m)
|
|
||||||
.loadPartials(event));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static ModelResourceLocation getItemModelLocation(Item item) {
|
|
||||||
return new ModelResourceLocation(item.getRegistryName(), "inventory");
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static List<ModelResourceLocation> getAllBlockStateModelLocations(Block block) {
|
|
||||||
List<ModelResourceLocation> models = new ArrayList<>();
|
|
||||||
block.getStateDefinition()
|
|
||||||
.getPossibleStates()
|
|
||||||
.forEach(state -> {
|
|
||||||
models.add(getBlockModelLocation(block, BlockModelShapes.statePropertiesToString(state.getValues())));
|
|
||||||
});
|
|
||||||
return models;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static ModelResourceLocation getBlockModelLocation(Block block, String suffix) {
|
|
||||||
return new ModelResourceLocation(block.getRegistryName(), suffix);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static <T extends IBakedModel> void swapModels(Map<ResourceLocation, IBakedModel> modelRegistry,
|
|
||||||
List<ModelResourceLocation> locations, Function<IBakedModel, T> factory) {
|
|
||||||
locations.forEach(location -> {
|
|
||||||
swapModels(modelRegistry, location, factory);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static <T extends IBakedModel> void swapModels(Map<ResourceLocation, IBakedModel> modelRegistry,
|
|
||||||
ModelResourceLocation location, Function<IBakedModel, T> factory) {
|
|
||||||
modelRegistry.put(location, factory.apply(modelRegistry.get(location)));
|
|
||||||
}
|
|
||||||
|
|
||||||
protected static void registerLayerRenderers(EntityRendererManager renderManager) {
|
protected static void registerLayerRenderers(EntityRendererManager renderManager) {
|
||||||
CopperBacktankArmorLayer.registerOnAll(renderManager);
|
CopperBacktankArmorLayer.registerOnAll(renderManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CustomItemModels getCustomItemModels() {
|
|
||||||
if (customItemModels == null)
|
|
||||||
customItemModels = new CustomItemModels();
|
|
||||||
return customItemModels;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static CustomRenderedItems getCustomRenderedItems() {
|
|
||||||
if (customRenderedItems == null)
|
|
||||||
customRenderedItems = new CustomRenderedItems();
|
|
||||||
return customRenderedItems;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static CustomBlockModels getCustomBlockModels() {
|
|
||||||
if (customBlockModels == null)
|
|
||||||
customBlockModels = new CustomBlockModels();
|
|
||||||
return customBlockModels;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static CasingConnectivity getCasingConnectivity() {
|
|
||||||
if (casingConnectivity == null)
|
|
||||||
casingConnectivity = new CasingConnectivity();
|
|
||||||
return casingConnectivity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void invalidateRenderers() {
|
public static void invalidateRenderers() {
|
||||||
BUFFER_CACHE.invalidate();
|
BUFFER_CACHE.invalidate();
|
||||||
|
|
||||||
|
@ -233,4 +134,5 @@ public class CreateClient {
|
||||||
|
|
||||||
mc.gui.handleChat(ChatType.CHAT, text, mc.player.getUUID());
|
mc.gui.handleChat(ChatType.CHAT, text, mc.player.getUUID());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
import com.simibubi.create.AllShapes;
|
import com.simibubi.create.AllShapes;
|
||||||
import com.simibubi.create.AllTileEntities;
|
import com.simibubi.create.AllTileEntities;
|
||||||
import com.simibubi.create.foundation.block.ITE;
|
import com.simibubi.create.foundation.block.ITE;
|
||||||
import com.simibubi.create.foundation.block.ProperDirectionalBlock;
|
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
|
||||||
|
|
||||||
import mcp.MethodsReturnNonnullByDefault;
|
import mcp.MethodsReturnNonnullByDefault;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
@ -20,7 +20,7 @@ import net.minecraft.world.World;
|
||||||
|
|
||||||
@ParametersAreNonnullByDefault
|
@ParametersAreNonnullByDefault
|
||||||
@MethodsReturnNonnullByDefault
|
@MethodsReturnNonnullByDefault
|
||||||
public class PortableStorageInterfaceBlock extends ProperDirectionalBlock
|
public class PortableStorageInterfaceBlock extends WrenchableDirectionalBlock
|
||||||
implements ITE<PortableStorageInterfaceTileEntity> {
|
implements ITE<PortableStorageInterfaceTileEntity> {
|
||||||
|
|
||||||
boolean fluids;
|
boolean fluids;
|
||||||
|
|
|
@ -4,7 +4,7 @@ import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
|
|
||||||
import com.simibubi.create.AllShapes;
|
import com.simibubi.create.AllShapes;
|
||||||
import com.simibubi.create.AllTileEntities;
|
import com.simibubi.create.AllTileEntities;
|
||||||
import com.simibubi.create.foundation.block.ProperDirectionalBlock;
|
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
|
||||||
|
|
||||||
import mcp.MethodsReturnNonnullByDefault;
|
import mcp.MethodsReturnNonnullByDefault;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
@ -24,7 +24,7 @@ import net.minecraft.world.World;
|
||||||
|
|
||||||
@MethodsReturnNonnullByDefault
|
@MethodsReturnNonnullByDefault
|
||||||
@ParametersAreNonnullByDefault
|
@ParametersAreNonnullByDefault
|
||||||
public class NozzleBlock extends ProperDirectionalBlock {
|
public class NozzleBlock extends WrenchableDirectionalBlock {
|
||||||
|
|
||||||
public NozzleBlock(Properties p_i48415_1_) {
|
public NozzleBlock(Properties p_i48415_1_) {
|
||||||
super(p_i48415_1_);
|
super(p_i48415_1_);
|
||||||
|
|
|
@ -10,7 +10,7 @@ import javax.annotation.Nullable;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllShapes;
|
import com.simibubi.create.AllShapes;
|
||||||
import com.simibubi.create.foundation.block.ProperDirectionalBlock;
|
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
|
||||||
import com.simibubi.create.foundation.utility.DyeHelper;
|
import com.simibubi.create.foundation.utility.DyeHelper;
|
||||||
import com.simibubi.create.foundation.utility.Iterate;
|
import com.simibubi.create.foundation.utility.Iterate;
|
||||||
import com.simibubi.create.foundation.utility.placement.IPlacementHelper;
|
import com.simibubi.create.foundation.utility.placement.IPlacementHelper;
|
||||||
|
@ -41,7 +41,7 @@ import net.minecraft.util.math.vector.Vector3d;
|
||||||
import net.minecraft.world.IBlockReader;
|
import net.minecraft.world.IBlockReader;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class SailBlock extends ProperDirectionalBlock {
|
public class SailBlock extends WrenchableDirectionalBlock {
|
||||||
|
|
||||||
public static SailBlock frame(Properties properties) {
|
public static SailBlock frame(Properties properties) {
|
||||||
return new SailBlock(properties, true);
|
return new SailBlock(properties, true);
|
||||||
|
|
|
@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.components.structureMovement.ch
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllTileEntities;
|
import com.simibubi.create.AllTileEntities;
|
||||||
import com.simibubi.create.foundation.block.ITE;
|
import com.simibubi.create.foundation.block.ITE;
|
||||||
import com.simibubi.create.foundation.block.ProperDirectionalBlock;
|
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
|
@ -25,7 +25,7 @@ import net.minecraft.world.IWorldReader;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.server.ServerWorld;
|
import net.minecraft.world.server.ServerWorld;
|
||||||
|
|
||||||
public class StickerBlock extends ProperDirectionalBlock implements ITE<StickerTileEntity> {
|
public class StickerBlock extends WrenchableDirectionalBlock implements ITE<StickerTileEntity> {
|
||||||
|
|
||||||
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
||||||
public static final BooleanProperty EXTENDED = BlockStateProperties.EXTENDED;
|
public static final BooleanProperty EXTENDED = BlockStateProperties.EXTENDED;
|
||||||
|
|
|
@ -5,7 +5,7 @@ import static com.simibubi.create.content.contraptions.components.structureMovem
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllShapes;
|
import com.simibubi.create.AllShapes;
|
||||||
import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState;
|
import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState;
|
||||||
import com.simibubi.create.foundation.block.ProperDirectionalBlock;
|
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
|
@ -30,7 +30,7 @@ import net.minecraft.world.IBlockReader;
|
||||||
import net.minecraft.world.IWorld;
|
import net.minecraft.world.IWorld;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class MechanicalPistonHeadBlock extends ProperDirectionalBlock implements IWaterLoggable {
|
public class MechanicalPistonHeadBlock extends WrenchableDirectionalBlock implements IWaterLoggable {
|
||||||
|
|
||||||
public static final EnumProperty<PistonType> TYPE = BlockStateProperties.PISTON_TYPE;
|
public static final EnumProperty<PistonType> TYPE = BlockStateProperties.PISTON_TYPE;
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.AllShapes;
|
import com.simibubi.create.AllShapes;
|
||||||
import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState;
|
import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState;
|
||||||
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
|
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
|
||||||
import com.simibubi.create.foundation.block.ProperDirectionalBlock;
|
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
|
||||||
import com.simibubi.create.foundation.utility.placement.IPlacementHelper;
|
import com.simibubi.create.foundation.utility.placement.IPlacementHelper;
|
||||||
import com.simibubi.create.foundation.utility.placement.PlacementHelpers;
|
import com.simibubi.create.foundation.utility.placement.PlacementHelpers;
|
||||||
import com.simibubi.create.foundation.utility.placement.util.PoleHelper;
|
import com.simibubi.create.foundation.utility.placement.util.PoleHelper;
|
||||||
|
@ -44,7 +44,7 @@ import net.minecraft.world.IWorld;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.ToolType;
|
import net.minecraftforge.common.ToolType;
|
||||||
|
|
||||||
public class PistonExtensionPoleBlock extends ProperDirectionalBlock implements IWrenchable, IWaterLoggable {
|
public class PistonExtensionPoleBlock extends WrenchableDirectionalBlock implements IWrenchable, IWaterLoggable {
|
||||||
|
|
||||||
private static final int placementHelperId = PlacementHelpers.register(PlacementHelper.get());
|
private static final int placementHelperId = PlacementHelpers.register(PlacementHelper.get());
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.simibubi.create.content.contraptions.components.structureMovement.render;
|
package com.simibubi.create.content.contraptions.components.structureMovement.render;
|
||||||
|
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
|
|
||||||
public class LightVolumeDebugger {
|
public class LightVolumeDebugger {
|
||||||
public static void render(MatrixStack ms, SuperRenderTypeBuffer buffer) {
|
public static void render(MatrixStack ms, SuperRenderTypeBuffer buffer) {
|
||||||
|
|
|
@ -7,7 +7,7 @@ import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock;
|
||||||
import com.simibubi.create.content.contraptions.fluids.FluidPropagator;
|
import com.simibubi.create.content.contraptions.fluids.FluidPropagator;
|
||||||
import com.simibubi.create.content.contraptions.relays.elementary.AbstractShaftBlock;
|
import com.simibubi.create.content.contraptions.relays.elementary.AbstractShaftBlock;
|
||||||
import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock;
|
import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock;
|
||||||
import com.simibubi.create.foundation.block.ProperDirectionalBlock;
|
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
|
||||||
import com.simibubi.create.foundation.utility.Lang;
|
import com.simibubi.create.foundation.utility.Lang;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
@ -19,7 +19,7 @@ import net.minecraft.util.Direction;
|
||||||
import net.minecraft.util.Direction.Axis;
|
import net.minecraft.util.Direction.Axis;
|
||||||
import net.minecraft.util.IStringSerializable;
|
import net.minecraft.util.IStringSerializable;
|
||||||
|
|
||||||
public class BracketBlock extends ProperDirectionalBlock {
|
public class BracketBlock extends WrenchableDirectionalBlock {
|
||||||
|
|
||||||
public static final BooleanProperty AXIS_ALONG_FIRST_COORDINATE =
|
public static final BooleanProperty AXIS_ALONG_FIRST_COORDINATE =
|
||||||
DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE;
|
DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE;
|
||||||
|
|
|
@ -95,7 +95,7 @@ public interface IHaveGoggleInformation {
|
||||||
|
|
||||||
class Format {
|
class Format {
|
||||||
|
|
||||||
private NumberFormat format = NumberFormat.getNumberInstance(Locale.ROOT);;
|
private NumberFormat format = NumberFormat.getNumberInstance(Locale.ROOT);
|
||||||
|
|
||||||
private Format() {}
|
private Format() {}
|
||||||
|
|
||||||
|
|
|
@ -145,9 +145,9 @@ public class BasinRecipe extends ProcessingRecipe<SmartInventory> {
|
||||||
|
|
||||||
if (fluidsAffected) {
|
if (fluidsAffected) {
|
||||||
basin.getBehaviour(SmartFluidTankBehaviour.INPUT)
|
basin.getBehaviour(SmartFluidTankBehaviour.INPUT)
|
||||||
.foreach(TankSegment::onFluidStackChanged);
|
.forEach(TankSegment::onFluidStackChanged);
|
||||||
basin.getBehaviour(SmartFluidTankBehaviour.OUTPUT)
|
basin.getBehaviour(SmartFluidTankBehaviour.OUTPUT)
|
||||||
.foreach(TankSegment::onFluidStackChanged);
|
.forEach(TankSegment::onFluidStackChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (simulate) {
|
if (simulate) {
|
||||||
|
|
|
@ -22,7 +22,7 @@ public class EncasedCTBehaviour extends ConnectedTextureBehaviour {
|
||||||
Direction face) {
|
Direction face) {
|
||||||
if (isBeingBlocked(state, reader, pos, otherPos, face))
|
if (isBeingBlocked(state, reader, pos, otherPos, face))
|
||||||
return false;
|
return false;
|
||||||
CasingConnectivity cc = CreateClient.getCasingConnectivity();
|
CasingConnectivity cc = CreateClient.CASING_CONNECTIVITY;
|
||||||
CasingConnectivity.Entry entry = cc.get(state);
|
CasingConnectivity.Entry entry = cc.get(state);
|
||||||
CasingConnectivity.Entry otherEntry = cc.get(other);
|
CasingConnectivity.Entry otherEntry = cc.get(other);
|
||||||
if (entry == null || otherEntry == null)
|
if (entry == null || otherEntry == null)
|
||||||
|
|
|
@ -7,6 +7,7 @@ import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollVal
|
||||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||||
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.model.ItemCameraTransforms;
|
import net.minecraft.client.renderer.model.ItemCameraTransforms;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.math.vector.Vector3f;
|
import net.minecraft.util.math.vector.Vector3f;
|
||||||
|
@ -26,4 +27,9 @@ public class WrenchItemRenderer extends CustomRenderedItemModelRenderer<WrenchMo
|
||||||
renderer.render(model.getPartial("gear"), light);
|
renderer.render(model.getPartial("gear"), light);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WrenchModel createModel(IBakedModel originalModel) {
|
||||||
|
return new WrenchModel(originalModel);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.simibubi.create.content.contraptions.wrench;
|
||||||
import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel;
|
import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.model.IBakedModel;
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer;
|
|
||||||
|
|
||||||
public class WrenchModel extends CreateCustomRenderedItemModel {
|
public class WrenchModel extends CreateCustomRenderedItemModel {
|
||||||
|
|
||||||
|
@ -12,9 +11,4 @@ public class WrenchModel extends CreateCustomRenderedItemModel {
|
||||||
addPartials("gear");
|
addPartials("gear");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStackTileEntityRenderer createRenderer() {
|
|
||||||
return new WrenchItemRenderer();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import com.simibubi.create.foundation.item.render.PartialItemModelRenderer;
|
||||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||||
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.model.ItemCameraTransforms;
|
import net.minecraft.client.renderer.model.ItemCameraTransforms;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
|
@ -32,4 +33,9 @@ public class SymmetryWandItemRenderer extends CustomRenderedItemModelRenderer<Sy
|
||||||
renderer.renderGlowing(model.getPartial("bits"), maxLight);
|
renderer.renderGlowing(model.getPartial("bits"), maxLight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SymmetryWandModel createModel(IBakedModel originalModel) {
|
||||||
|
return new SymmetryWandModel(originalModel);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.simibubi.create.content.curiosities.symmetry.client;
|
||||||
import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel;
|
import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.model.IBakedModel;
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer;
|
|
||||||
|
|
||||||
public class SymmetryWandModel extends CreateCustomRenderedItemModel {
|
public class SymmetryWandModel extends CreateCustomRenderedItemModel {
|
||||||
|
|
||||||
|
@ -12,9 +11,4 @@ public class SymmetryWandModel extends CreateCustomRenderedItemModel {
|
||||||
addPartials("bits", "core", "core_glow");
|
addPartials("bits", "core", "core_glow");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStackTileEntityRenderer createRenderer() {
|
|
||||||
return new SymmetryWandItemRenderer();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import com.simibubi.create.foundation.item.render.PartialItemModelRenderer;
|
||||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||||
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
|
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
|
@ -107,4 +108,9 @@ public class ExtendoGripItemRenderer extends CustomRenderedItemModelRenderer<Ext
|
||||||
ms.popPose();
|
ms.popPose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ExtendoGripModel createModel(IBakedModel originalModel) {
|
||||||
|
return new ExtendoGripModel(originalModel);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.simibubi.create.content.curiosities.tools;
|
||||||
import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel;
|
import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.model.IBakedModel;
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer;
|
|
||||||
|
|
||||||
public class ExtendoGripModel extends CreateCustomRenderedItemModel {
|
public class ExtendoGripModel extends CreateCustomRenderedItemModel {
|
||||||
|
|
||||||
|
@ -12,9 +11,4 @@ public class ExtendoGripModel extends CreateCustomRenderedItemModel {
|
||||||
addPartials("cog", "thin_short", "wide_short", "thin_long", "wide_long");
|
addPartials("cog", "thin_short", "wide_short", "thin_long", "wide_long");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStackTileEntityRenderer createRenderer() {
|
|
||||||
return new ExtendoGripItemRenderer();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@ package com.simibubi.create.content.curiosities.tools;
|
||||||
|
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel;
|
import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel;
|
||||||
|
import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer;
|
||||||
|
import com.simibubi.create.foundation.item.render.PartialItemModelRenderer;
|
||||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
@ -10,30 +12,28 @@ import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||||
import net.minecraft.client.renderer.ItemRenderer;
|
import net.minecraft.client.renderer.ItemRenderer;
|
||||||
import net.minecraft.client.renderer.model.IBakedModel;
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
|
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
|
||||||
import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
import net.minecraft.util.math.vector.Vector3f;
|
import net.minecraft.util.math.vector.Vector3f;
|
||||||
|
|
||||||
public class SandPaperItemRenderer extends ItemStackTileEntityRenderer {
|
public class SandPaperItemRenderer extends CustomRenderedItemModelRenderer<SandPaperItemRenderer.SandPaperModel> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void renderByItem(ItemStack stack, TransformType transformType, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) {
|
protected void render(ItemStack stack, SandPaperModel model, PartialItemModelRenderer renderer,
|
||||||
|
TransformType transformType, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) {
|
||||||
ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer();
|
ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer();
|
||||||
ClientPlayerEntity player = Minecraft.getInstance().player;
|
ClientPlayerEntity player = Minecraft.getInstance().player;
|
||||||
SandPaperModel mainModel = (SandPaperModel) itemRenderer.getModel(stack, Minecraft.getInstance().level, null);
|
|
||||||
float partialTicks = AnimationTickHolder.getPartialTicks();
|
float partialTicks = AnimationTickHolder.getPartialTicks();
|
||||||
|
|
||||||
boolean leftHand = transformType == TransformType.FIRST_PERSON_LEFT_HAND;
|
boolean leftHand = transformType == TransformType.FIRST_PERSON_LEFT_HAND;
|
||||||
boolean firstPerson = leftHand || transformType == TransformType.FIRST_PERSON_RIGHT_HAND;
|
boolean firstPerson = leftHand || transformType == TransformType.FIRST_PERSON_RIGHT_HAND;
|
||||||
|
|
||||||
ms.pushPose();
|
|
||||||
ms.translate(.5f, .5f, .5f);
|
|
||||||
|
|
||||||
CompoundNBT tag = stack.getOrCreateTag();
|
CompoundNBT tag = stack.getOrCreateTag();
|
||||||
boolean jeiMode = tag.contains("JEI");
|
boolean jeiMode = tag.contains("JEI");
|
||||||
|
|
||||||
|
ms.pushPose();
|
||||||
|
|
||||||
if (tag.contains("Polishing")) {
|
if (tag.contains("Polishing")) {
|
||||||
ms.pushPose();
|
ms.pushPose();
|
||||||
|
|
||||||
|
@ -74,22 +74,22 @@ public class SandPaperItemRenderer extends ItemStackTileEntityRenderer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
itemRenderer.render(stack, TransformType.NONE, false, ms, buffer, light, overlay, mainModel.getOriginalModel());
|
itemRenderer.render(stack, TransformType.NONE, false, ms, buffer, light, overlay, model.getOriginalModel());
|
||||||
|
|
||||||
ms.popPose();
|
ms.popPose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SandPaperModel createModel(IBakedModel originalModel) {
|
||||||
|
return new SandPaperModel(originalModel);
|
||||||
|
}
|
||||||
|
|
||||||
public static class SandPaperModel extends CreateCustomRenderedItemModel {
|
public static class SandPaperModel extends CreateCustomRenderedItemModel {
|
||||||
|
|
||||||
public SandPaperModel(IBakedModel template) {
|
public SandPaperModel(IBakedModel template) {
|
||||||
super(template, "");
|
super(template, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStackTileEntityRenderer createRenderer() {
|
|
||||||
return new SandPaperItemRenderer();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
||||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||||
import net.minecraft.client.renderer.ItemRenderer;
|
import net.minecraft.client.renderer.ItemRenderer;
|
||||||
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
|
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
|
||||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
@ -62,4 +63,9 @@ public class PotatoCannonItemRenderer extends CustomRenderedItemModelRenderer<Po
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PotatoCannonModel createModel(IBakedModel originalModel) {
|
||||||
|
return new PotatoCannonModel(originalModel);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.simibubi.create.content.curiosities.weapons;
|
||||||
import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel;
|
import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.model.IBakedModel;
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer;
|
|
||||||
|
|
||||||
public class PotatoCannonModel extends CreateCustomRenderedItemModel {
|
public class PotatoCannonModel extends CreateCustomRenderedItemModel {
|
||||||
|
|
||||||
|
@ -12,9 +11,4 @@ public class PotatoCannonModel extends CreateCustomRenderedItemModel {
|
||||||
addPartials("cog");
|
addPartials("cog");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStackTileEntityRenderer createRenderer() {
|
|
||||||
return new PotatoCannonItemRenderer();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,7 @@ public abstract class ShootableGadgetRenderHandler {
|
||||||
|
|
||||||
protected abstract void transformHand(MatrixStack ms, float flip, float equipProgress, float recoil, float pt);
|
protected abstract void transformHand(MatrixStack ms, float flip, float equipProgress, float recoil, float pt);
|
||||||
|
|
||||||
public void register(IEventBus bus) {
|
public void registerListeners(IEventBus bus) {
|
||||||
bus.addListener(this::onRenderPlayerHand);
|
bus.addListener(this::onRenderPlayerHand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -88,8 +88,8 @@ public class WorldshaperItem extends ZapperItem {
|
||||||
CompoundNBT nbt = stack.getOrCreateTag();
|
CompoundNBT nbt = stack.getOrCreateTag();
|
||||||
NBTHelper.writeEnum(nbt, "Brush", brush);
|
NBTHelper.writeEnum(nbt, "Brush", brush);
|
||||||
nbt.put("BrushParams", NBTUtil.writeBlockPos(new BlockPos(brushParamX, brushParamY, brushParamZ)));
|
nbt.put("BrushParams", NBTUtil.writeBlockPos(new BlockPos(brushParamX, brushParamY, brushParamZ)));
|
||||||
nbt.putString("Tool", tool.name());
|
NBTHelper.writeEnum(nbt, "Tool", tool);
|
||||||
nbt.putString("Placement", placement.name());
|
NBTHelper.writeEnum(nbt, "Placement", placement);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
||||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||||
import net.minecraft.client.renderer.LightTexture;
|
import net.minecraft.client.renderer.LightTexture;
|
||||||
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.model.ItemCameraTransforms;
|
import net.minecraft.client.renderer.model.ItemCameraTransforms;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.HandSide;
|
import net.minecraft.util.HandSide;
|
||||||
|
@ -59,4 +60,9 @@ public class WorldshaperItemRenderer extends ZapperItemRenderer<WorldshaperModel
|
||||||
renderer.render(model.getPartial("accelerator"), light);
|
renderer.render(model.getPartial("accelerator"), light);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WorldshaperModel createModel(IBakedModel originalModel) {
|
||||||
|
return new WorldshaperModel(originalModel);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.simibubi.create.content.curiosities.zapper.terrainzapper;
|
||||||
import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel;
|
import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.model.IBakedModel;
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer;
|
|
||||||
|
|
||||||
public class WorldshaperModel extends CreateCustomRenderedItemModel {
|
public class WorldshaperModel extends CreateCustomRenderedItemModel {
|
||||||
|
|
||||||
|
@ -12,9 +11,4 @@ public class WorldshaperModel extends CreateCustomRenderedItemModel {
|
||||||
addPartials("core", "core_glow", "accelerator");
|
addPartials("core", "core_glow", "accelerator");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStackTileEntityRenderer createRenderer() {
|
|
||||||
return new WorldshaperItemRenderer();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ package com.simibubi.create.content.logistics.block.inventories;
|
||||||
|
|
||||||
import com.simibubi.create.AllShapes;
|
import com.simibubi.create.AllShapes;
|
||||||
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
|
import com.simibubi.create.content.contraptions.wrench.IWrenchable;
|
||||||
import com.simibubi.create.foundation.block.ProperDirectionalBlock;
|
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
|
||||||
import com.simibubi.create.foundation.utility.Iterate;
|
import com.simibubi.create.foundation.utility.Iterate;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
@ -19,7 +19,7 @@ import net.minecraft.world.IBlockReader;
|
||||||
import net.minecraft.world.IWorld;
|
import net.minecraft.world.IWorld;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
public class CrateBlock extends ProperDirectionalBlock implements IWrenchable {
|
public class CrateBlock extends WrenchableDirectionalBlock implements IWrenchable {
|
||||||
|
|
||||||
public static final BooleanProperty DOUBLE = BooleanProperty.create("double");
|
public static final BooleanProperty DOUBLE = BooleanProperty.create("double");
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ import javax.annotation.Nullable;
|
||||||
import javax.annotation.ParametersAreNonnullByDefault;
|
import javax.annotation.ParametersAreNonnullByDefault;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.foundation.block.ProperDirectionalBlock;
|
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
|
||||||
|
|
||||||
import mcp.MethodsReturnNonnullByDefault;
|
import mcp.MethodsReturnNonnullByDefault;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
@ -24,7 +24,7 @@ import net.minecraft.world.server.ServerWorld;
|
||||||
|
|
||||||
@ParametersAreNonnullByDefault
|
@ParametersAreNonnullByDefault
|
||||||
@MethodsReturnNonnullByDefault
|
@MethodsReturnNonnullByDefault
|
||||||
public class RedstoneContactBlock extends ProperDirectionalBlock {
|
public class RedstoneContactBlock extends WrenchableDirectionalBlock {
|
||||||
|
|
||||||
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import java.util.Random;
|
||||||
import com.simibubi.create.AllShapes;
|
import com.simibubi.create.AllShapes;
|
||||||
import com.simibubi.create.AllTileEntities;
|
import com.simibubi.create.AllTileEntities;
|
||||||
import com.simibubi.create.foundation.block.ITE;
|
import com.simibubi.create.foundation.block.ITE;
|
||||||
import com.simibubi.create.foundation.block.ProperDirectionalBlock;
|
import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
|
||||||
import com.simibubi.create.foundation.utility.Iterate;
|
import com.simibubi.create.foundation.utility.Iterate;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
@ -30,7 +30,7 @@ import net.minecraft.world.IWorldReader;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.server.ServerWorld;
|
import net.minecraft.world.server.ServerWorld;
|
||||||
|
|
||||||
public class RedstoneLinkBlock extends ProperDirectionalBlock implements ITE<RedstoneLinkTileEntity> {
|
public class RedstoneLinkBlock extends WrenchableDirectionalBlock implements ITE<RedstoneLinkTileEntity> {
|
||||||
|
|
||||||
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
||||||
public static final BooleanProperty RECEIVER = BooleanProperty.create("receiver");
|
public static final BooleanProperty RECEIVER = BooleanProperty.create("receiver");
|
||||||
|
|
|
@ -36,6 +36,10 @@ public class LinkedControllerItemRenderer extends CustomRenderedItemModelRendere
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tick() {
|
static void tick() {
|
||||||
|
if (Minecraft.getInstance()
|
||||||
|
.isPaused())
|
||||||
|
return;
|
||||||
|
|
||||||
boolean active = LinkedControllerClientHandler.MODE != Mode.IDLE;
|
boolean active = LinkedControllerClientHandler.MODE != Mode.IDLE;
|
||||||
equipProgress.chase(active ? 1 : 0, .2f, Chaser.EXP);
|
equipProgress.chase(active ? 1 : 0, .2f, Chaser.EXP);
|
||||||
equipProgress.tickChaser();
|
equipProgress.tickChaser();
|
||||||
|
@ -164,6 +168,11 @@ public class LinkedControllerItemRenderer extends CustomRenderedItemModelRendere
|
||||||
ms.popPose();
|
ms.popPose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LinkedControllerModel createModel(IBakedModel originalModel) {
|
||||||
|
return new LinkedControllerModel(originalModel);
|
||||||
|
}
|
||||||
|
|
||||||
protected enum RenderType {
|
protected enum RenderType {
|
||||||
NORMAL, LECTERN;
|
NORMAL, LECTERN;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.simibubi.create.content.logistics.item;
|
||||||
import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel;
|
import com.simibubi.create.foundation.item.render.CreateCustomRenderedItemModel;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.model.IBakedModel;
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer;
|
|
||||||
|
|
||||||
public class LinkedControllerModel extends CreateCustomRenderedItemModel {
|
public class LinkedControllerModel extends CreateCustomRenderedItemModel {
|
||||||
|
|
||||||
|
@ -12,9 +11,4 @@ public class LinkedControllerModel extends CreateCustomRenderedItemModel {
|
||||||
addPartials("powered", "button");
|
addPartials("powered", "button");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStackTileEntityRenderer createRenderer() {
|
|
||||||
return new LinkedControllerItemRenderer();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ import com.simibubi.create.content.schematics.packet.SchematicPlacePacket;
|
||||||
import com.simibubi.create.content.schematics.packet.SchematicSyncPacket;
|
import com.simibubi.create.content.schematics.packet.SchematicSyncPacket;
|
||||||
import com.simibubi.create.foundation.gui.ToolSelectionScreen;
|
import com.simibubi.create.foundation.gui.ToolSelectionScreen;
|
||||||
import com.simibubi.create.foundation.networking.AllPackets;
|
import com.simibubi.create.foundation.networking.AllPackets;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
import com.simibubi.create.foundation.utility.outliner.AABBOutline;
|
import com.simibubi.create.foundation.utility.outliner.AABBOutline;
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,8 @@ import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.simibubi.create.content.schematics.SchematicWorld;
|
import com.simibubi.create.content.schematics.SchematicWorld;
|
||||||
import com.simibubi.create.foundation.render.SuperByteBuffer;
|
import com.simibubi.create.foundation.render.SuperByteBuffer;
|
||||||
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
import com.simibubi.create.foundation.render.TileEntityRenderHelper;
|
import com.simibubi.create.foundation.render.TileEntityRenderHelper;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
|
|
@ -4,7 +4,7 @@ import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.simibubi.create.AllKeys;
|
import com.simibubi.create.AllKeys;
|
||||||
import com.simibubi.create.content.schematics.client.SchematicTransformation;
|
import com.simibubi.create.content.schematics.client.SchematicTransformation;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
import com.simibubi.create.foundation.utility.outliner.AABBOutline;
|
import com.simibubi.create.foundation.utility.outliner.AABBOutline;
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ package com.simibubi.create.content.schematics.client.tools;
|
||||||
|
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.simibubi.create.AllSpecialTextures;
|
import com.simibubi.create.AllSpecialTextures;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
import com.simibubi.create.foundation.utility.outliner.AABBOutline;
|
import com.simibubi.create.foundation.utility.outliner.AABBOutline;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.simibubi.create.content.schematics.client.tools;
|
package com.simibubi.create.content.schematics.client.tools;
|
||||||
|
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.simibubi.create.content.schematics.client.tools;
|
package com.simibubi.create.content.schematics.client.tools;
|
||||||
|
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.simibubi.create.content.schematics.client.tools;
|
package com.simibubi.create.content.schematics.client.tools;
|
||||||
|
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
import com.simibubi.create.foundation.utility.outliner.LineOutline;
|
import com.simibubi.create.foundation.utility.outliner.LineOutline;
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ import com.simibubi.create.AllSpecialTextures;
|
||||||
import com.simibubi.create.CreateClient;
|
import com.simibubi.create.CreateClient;
|
||||||
import com.simibubi.create.content.schematics.client.SchematicHandler;
|
import com.simibubi.create.content.schematics.client.SchematicHandler;
|
||||||
import com.simibubi.create.content.schematics.client.SchematicTransformation;
|
import com.simibubi.create.content.schematics.client.SchematicTransformation;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
import com.simibubi.create.foundation.utility.RaycastHelper;
|
import com.simibubi.create.foundation.utility.RaycastHelper;
|
||||||
import com.simibubi.create.foundation.utility.RaycastHelper.PredicateTraceResult;
|
import com.simibubi.create.foundation.utility.RaycastHelper.PredicateTraceResult;
|
||||||
|
|
|
@ -22,7 +22,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.tra
|
||||||
import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController;
|
import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController;
|
||||||
import com.simibubi.create.content.contraptions.components.turntable.TurntableHandler;
|
import com.simibubi.create.content.contraptions.components.turntable.TurntableHandler;
|
||||||
import com.simibubi.create.content.contraptions.goggles.GoggleOverlayRenderer;
|
import com.simibubi.create.content.contraptions.goggles.GoggleOverlayRenderer;
|
||||||
import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation;
|
|
||||||
import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe;
|
import com.simibubi.create.content.contraptions.itemAssembly.SequencedAssemblyRecipe;
|
||||||
import com.simibubi.create.content.contraptions.relays.belt.BeltSlicer;
|
import com.simibubi.create.content.contraptions.relays.belt.BeltSlicer;
|
||||||
import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorHandler;
|
import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorHandler;
|
||||||
|
@ -43,7 +42,7 @@ import com.simibubi.create.foundation.item.TooltipHelper;
|
||||||
import com.simibubi.create.foundation.networking.AllPackets;
|
import com.simibubi.create.foundation.networking.AllPackets;
|
||||||
import com.simibubi.create.foundation.networking.LeftClickPacket;
|
import com.simibubi.create.foundation.networking.LeftClickPacket;
|
||||||
import com.simibubi.create.foundation.ponder.PonderTooltipHandler;
|
import com.simibubi.create.foundation.ponder.PonderTooltipHandler;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
import com.simibubi.create.foundation.sound.SoundScapes;
|
import com.simibubi.create.foundation.sound.SoundScapes;
|
||||||
import com.simibubi.create.foundation.tileEntity.behaviour.edgeInteraction.EdgeInteractionRenderer;
|
import com.simibubi.create.foundation.tileEntity.behaviour.edgeInteraction.EdgeInteractionRenderer;
|
||||||
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringRenderer;
|
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringRenderer;
|
||||||
|
@ -98,10 +97,10 @@ public class ClientEvents {
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void onTick(ClientTickEvent event) {
|
public static void onTick(ClientTickEvent event) {
|
||||||
World world = Minecraft.getInstance().level;
|
|
||||||
if (!isGameActive())
|
if (!isGameActive())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
World world = Minecraft.getInstance().level;
|
||||||
if (event.phase == Phase.START) {
|
if (event.phase == Phase.START) {
|
||||||
LinkedControllerClientHandler.tick();
|
LinkedControllerClientHandler.tick();
|
||||||
AirCurrent.tickClientPlayerSounds();
|
AirCurrent.tickClientPlayerSounds();
|
||||||
|
@ -161,13 +160,6 @@ public class ClientEvents {
|
||||||
CreateClient.invalidateRenderers();
|
CreateClient.invalidateRenderers();
|
||||||
AnimationTickHolder.reset();
|
AnimationTickHolder.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* i was getting nullPointers when trying to call this during client setup,
|
|
||||||
* so i assume minecraft's language manager isn't yet fully loaded at that time.
|
|
||||||
* not sure where else to call this tho :S
|
|
||||||
*/
|
|
||||||
IHaveGoggleInformation.numberFormat.update();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
|
|
|
@ -2,21 +2,19 @@ package com.simibubi.create.foundation;
|
||||||
|
|
||||||
import com.simibubi.create.CreateClient;
|
import com.simibubi.create.CreateClient;
|
||||||
import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation;
|
import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation;
|
||||||
import com.simibubi.create.foundation.block.render.SpriteShifter;
|
|
||||||
import com.simibubi.create.foundation.sound.SoundScapes;
|
import com.simibubi.create.foundation.sound.SoundScapes;
|
||||||
import com.simibubi.create.foundation.utility.ISimpleReloadListener;
|
import com.simibubi.create.foundation.utility.ISimpleReloadListener;
|
||||||
|
|
||||||
import net.minecraft.profiler.IProfiler;
|
import net.minecraft.profiler.IProfiler;
|
||||||
import net.minecraft.resources.IResourceManager;
|
import net.minecraft.resources.IResourceManager;
|
||||||
|
|
||||||
public class ResourceReloadHandler implements ISimpleReloadListener {
|
public class ClientResourceReloadListener implements ISimpleReloadListener {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onReload(IResourceManager resourceManagerIn, IProfiler profilerIn) {
|
public void onReload(IResourceManager resourceManager, IProfiler profiler) {
|
||||||
SpriteShifter.reloadUVs();
|
|
||||||
CreateClient.invalidateRenderers();
|
CreateClient.invalidateRenderers();
|
||||||
IHaveGoggleInformation.numberFormat.update();
|
|
||||||
SoundScapes.invalidateAll();
|
SoundScapes.invalidateAll();
|
||||||
|
IHaveGoggleInformation.numberFormat.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package com.simibubi.create.foundation;
|
package com.simibubi.create.foundation.block;
|
||||||
|
|
||||||
import com.simibubi.create.AllBlocks;
|
import com.simibubi.create.AllBlocks;
|
||||||
import com.simibubi.create.content.contraptions.relays.belt.BeltBlock;
|
import com.simibubi.create.content.contraptions.relays.belt.BeltBlock;
|
|
@ -12,9 +12,9 @@ import net.minecraft.util.Direction;
|
||||||
import net.minecraft.util.Mirror;
|
import net.minecraft.util.Mirror;
|
||||||
import net.minecraft.util.Rotation;
|
import net.minecraft.util.Rotation;
|
||||||
|
|
||||||
public class ProperDirectionalBlock extends DirectionalBlock implements IWrenchable {
|
public class WrenchableDirectionalBlock extends DirectionalBlock implements IWrenchable {
|
||||||
|
|
||||||
public ProperDirectionalBlock(Properties p_i48415_1_) {
|
public WrenchableDirectionalBlock(Properties p_i48415_1_) {
|
||||||
super(p_i48415_1_);
|
super(p_i48415_1_);
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ public class CustomBlockModels {
|
||||||
registered.add(Pair.of(entry, behaviour));
|
registered.add(Pair.of(entry, behaviour));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void foreach(NonNullBiConsumer<Block, NonNullFunction<IBakedModel, ? extends IBakedModel>> consumer) {
|
public void forEach(NonNullBiConsumer<Block, NonNullFunction<IBakedModel, ? extends IBakedModel>> consumer) {
|
||||||
loadEntriesIfMissing();
|
loadEntriesIfMissing();
|
||||||
customModels.forEach(consumer);
|
customModels.forEach(consumer);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
package com.simibubi.create.foundation.block.render;
|
package com.simibubi.create.foundation.block.render;
|
||||||
|
|
||||||
import java.util.function.Function;
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
import net.minecraft.inventory.container.PlayerContainer;
|
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
public class SpriteShiftEntry {
|
public class SpriteShiftEntry {
|
||||||
|
@ -18,26 +15,24 @@ public class SpriteShiftEntry {
|
||||||
this.targetTextureLocation = targetTextureLocation;
|
this.targetTextureLocation = targetTextureLocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void loadTextures() {
|
public ResourceLocation getOriginalResourceLocation() {
|
||||||
Function<ResourceLocation, TextureAtlasSprite> textureMap = Minecraft.getInstance()
|
return originalTextureLocation;
|
||||||
.getTextureAtlas(PlayerContainer.BLOCK_ATLAS);
|
|
||||||
original = textureMap.apply(originalTextureLocation);
|
|
||||||
target = textureMap.apply(targetTextureLocation);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ResourceLocation getTargetResourceLocation() {
|
public ResourceLocation getTargetResourceLocation() {
|
||||||
return targetTextureLocation;
|
return targetTextureLocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TextureAtlasSprite getOriginal() {
|
||||||
|
return original;
|
||||||
|
}
|
||||||
|
|
||||||
public TextureAtlasSprite getTarget() {
|
public TextureAtlasSprite getTarget() {
|
||||||
if (target == null)
|
|
||||||
loadTextures();
|
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextureAtlasSprite getOriginal() {
|
protected void loadTextures(AtlasTexture atlas) {
|
||||||
if (original == null)
|
original = atlas.getSprite(originalTextureLocation);
|
||||||
loadTextures();
|
target = atlas.getSprite(targetTextureLocation);
|
||||||
return original;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -7,7 +7,10 @@ import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.simibubi.create.Create;
|
import com.simibubi.create.Create;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.texture.AtlasTexture;
|
||||||
|
import net.minecraft.inventory.container.PlayerContainer;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraftforge.client.event.TextureStitchEvent;
|
||||||
|
|
||||||
public class SpriteShifter {
|
public class SpriteShifter {
|
||||||
|
|
||||||
|
@ -28,12 +31,30 @@ public class SpriteShifter {
|
||||||
return get(Create.asResource(originalLocation), Create.asResource(targetLocation));
|
return get(Create.asResource(originalLocation), Create.asResource(targetLocation));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void reloadUVs() {
|
|
||||||
ENTRY_CACHE.values().forEach(SpriteShiftEntry::loadTextures);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static List<ResourceLocation> getAllTargetSprites() {
|
public static List<ResourceLocation> getAllTargetSprites() {
|
||||||
return ENTRY_CACHE.values().stream().map(SpriteShiftEntry::getTargetResourceLocation).collect(Collectors.toList());
|
return ENTRY_CACHE.values().stream().map(SpriteShiftEntry::getTargetResourceLocation).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void onTextureStitchPre(TextureStitchEvent.Pre event) {
|
||||||
|
if (!event.getMap()
|
||||||
|
.location()
|
||||||
|
.equals(PlayerContainer.BLOCK_ATLAS))
|
||||||
|
return;
|
||||||
|
|
||||||
|
getAllTargetSprites()
|
||||||
|
.forEach(event::addSprite);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void onTextureStitchPost(TextureStitchEvent.Post event) {
|
||||||
|
if (!event.getMap()
|
||||||
|
.location()
|
||||||
|
.equals(PlayerContainer.BLOCK_ATLAS))
|
||||||
|
return;
|
||||||
|
|
||||||
|
AtlasTexture atlas = event.getMap();
|
||||||
|
for (SpriteShiftEntry entry : ENTRY_CACHE.values()) {
|
||||||
|
entry.loadTextures(atlas);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,16 +12,19 @@ import com.simibubi.create.foundation.block.BlockStressValues;
|
||||||
import net.minecraftforge.common.ForgeConfigSpec;
|
import net.minecraftforge.common.ForgeConfigSpec;
|
||||||
import net.minecraftforge.fml.ModLoadingContext;
|
import net.minecraftforge.fml.ModLoadingContext;
|
||||||
import net.minecraftforge.fml.config.ModConfig;
|
import net.minecraftforge.fml.config.ModConfig;
|
||||||
import net.minecraftforge.fml.config.ModConfig.Type;
|
|
||||||
|
|
||||||
public class AllConfigs {
|
public class AllConfigs {
|
||||||
|
|
||||||
static Map<ConfigBase, ModConfig.Type> configs = new HashMap<>();
|
private static final Map<ModConfig.Type, ConfigBase> CONFIGS = new HashMap<>();
|
||||||
|
|
||||||
public static CClient CLIENT;
|
public static CClient CLIENT;
|
||||||
public static CCommon COMMON;
|
public static CCommon COMMON;
|
||||||
public static CServer SERVER;
|
public static CServer SERVER;
|
||||||
|
|
||||||
|
public static ConfigBase byType(ModConfig.Type type) {
|
||||||
|
return CONFIGS.get(type);
|
||||||
|
}
|
||||||
|
|
||||||
private static <T extends ConfigBase> T register(Supplier<T> factory, ModConfig.Type side) {
|
private static <T extends ConfigBase> T register(Supplier<T> factory, ModConfig.Type side) {
|
||||||
Pair<T, ForgeConfigSpec> specPair = new ForgeConfigSpec.Builder().configure(builder -> {
|
Pair<T, ForgeConfigSpec> specPair = new ForgeConfigSpec.Builder().configure(builder -> {
|
||||||
T config = factory.get();
|
T config = factory.get();
|
||||||
|
@ -31,7 +34,7 @@ public class AllConfigs {
|
||||||
|
|
||||||
T config = specPair.getLeft();
|
T config = specPair.getLeft();
|
||||||
config.specification = specPair.getRight();
|
config.specification = specPair.getRight();
|
||||||
configs.put(config, side);
|
CONFIGS.put(side, config);
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,25 +43,24 @@ public class AllConfigs {
|
||||||
COMMON = register(CCommon::new, ModConfig.Type.COMMON);
|
COMMON = register(CCommon::new, ModConfig.Type.COMMON);
|
||||||
SERVER = register(CServer::new, ModConfig.Type.SERVER);
|
SERVER = register(CServer::new, ModConfig.Type.SERVER);
|
||||||
|
|
||||||
for (Entry<ConfigBase, Type> pair : configs.entrySet())
|
for (Entry<ModConfig.Type, ConfigBase> pair : CONFIGS.entrySet())
|
||||||
context.registerConfig(pair.getValue(), pair.getKey().specification);
|
context.registerConfig(pair.getKey(), pair.getValue().specification);
|
||||||
|
|
||||||
BlockStressValues.registerProvider(context.getActiveNamespace(), SERVER.kinetics.stressValues);
|
BlockStressValues.registerProvider(context.getActiveNamespace(), SERVER.kinetics.stressValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void onLoad(ModConfig.Loading event) {
|
public static void onLoad(ModConfig.Loading event) {
|
||||||
for (Entry<ConfigBase, Type> pair : configs.entrySet())
|
for (ConfigBase config : CONFIGS.values())
|
||||||
if (pair.getKey().specification == event.getConfig()
|
if (config.specification == event.getConfig()
|
||||||
.getSpec())
|
.getSpec())
|
||||||
pair.getKey()
|
config.onLoad();
|
||||||
.onLoad();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void onReload(ModConfig.Reloading event) {
|
public static void onReload(ModConfig.Reloading event) {
|
||||||
for (Entry<ConfigBase, Type> pair : configs.entrySet())
|
for (ConfigBase config : CONFIGS.values())
|
||||||
if (pair.getKey().specification == event.getConfig()
|
if (config.specification == event.getConfig()
|
||||||
.getSpec())
|
.getSpec())
|
||||||
pair.getKey()
|
config.onReload();
|
||||||
.onReload();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,73 +4,73 @@ import com.simibubi.create.foundation.config.ui.ConfigAnnotations;
|
||||||
|
|
||||||
public class CClient extends ConfigBase {
|
public class CClient extends ConfigBase {
|
||||||
|
|
||||||
public ConfigGroup client = group(0, "client",
|
public final ConfigGroup client = group(0, "client",
|
||||||
Comments.client);
|
Comments.client);
|
||||||
|
|
||||||
//no group
|
//no group
|
||||||
public ConfigBool tooltips = b(true, "enableTooltips",
|
public final ConfigBool tooltips = b(true, "enableTooltips",
|
||||||
Comments.tooltips);
|
Comments.tooltips);
|
||||||
public ConfigBool enableOverstressedTooltip = b(true, "enableOverstressedTooltip",
|
public final ConfigBool enableOverstressedTooltip = b(true, "enableOverstressedTooltip",
|
||||||
Comments.enableOverstressedTooltip);
|
Comments.enableOverstressedTooltip);
|
||||||
public ConfigBool explainRenderErrors = b(false, "explainRenderErrors",
|
public final ConfigBool explainRenderErrors = b(false, "explainRenderErrors",
|
||||||
Comments.explainRenderErrors);
|
Comments.explainRenderErrors);
|
||||||
public ConfigFloat fanParticleDensity = f(.5f, 0, 1, "fanParticleDensity",
|
public final ConfigFloat fanParticleDensity = f(.5f, 0, 1, "fanParticleDensity",
|
||||||
Comments.fanParticleDensity);
|
Comments.fanParticleDensity);
|
||||||
public ConfigFloat filterItemRenderDistance = f(10f, 1, "filterItemRenderDistance", Comments.filterItemRenderDistance);
|
public final ConfigFloat filterItemRenderDistance = f(10f, 1, "filterItemRenderDistance", Comments.filterItemRenderDistance);
|
||||||
public ConfigBool rainbowDebug = b(true, "enableRainbowDebug",
|
public final ConfigBool rainbowDebug = b(true, "enableRainbowDebug",
|
||||||
Comments.rainbowDebug);
|
Comments.rainbowDebug);
|
||||||
public ConfigBool experimentalRendering = b(true, "experimentalRendering",
|
public final ConfigBool experimentalRendering = b(true, "experimentalRendering",
|
||||||
Comments.experimentalRendering);
|
Comments.experimentalRendering);
|
||||||
public ConfigInt maxContraptionLightVolume = i(16384, 0, Integer.MAX_VALUE, "maximumContraptionLightVolume",
|
public final ConfigInt maxContraptionLightVolume = i(16384, 0, Integer.MAX_VALUE, "maximumContraptionLightVolume",
|
||||||
Comments.maxContraptionLightVolume);
|
Comments.maxContraptionLightVolume);
|
||||||
// no group
|
// no group
|
||||||
public ConfigInt mainMenuConfigButtonRow = i(2, 0, 4, "mainMenuConfigButtonRow",
|
public final ConfigInt mainMenuConfigButtonRow = i(2, 0, 4, "mainMenuConfigButtonRow",
|
||||||
Comments.mainMenuConfigButtonRow);
|
Comments.mainMenuConfigButtonRow);
|
||||||
public ConfigInt mainMenuConfigButtonOffsetX = i(-4, Integer.MIN_VALUE, Integer.MAX_VALUE, "mainMenuConfigButtonOffsetX",
|
public final ConfigInt mainMenuConfigButtonOffsetX = i(-4, Integer.MIN_VALUE, Integer.MAX_VALUE, "mainMenuConfigButtonOffsetX",
|
||||||
Comments.mainMenuConfigButtonOffsetX);
|
Comments.mainMenuConfigButtonOffsetX);
|
||||||
public ConfigInt ingameMenuConfigButtonRow = i(3, 0, 5, "ingameMenuConfigButtonRow",
|
public final ConfigInt ingameMenuConfigButtonRow = i(3, 0, 5, "ingameMenuConfigButtonRow",
|
||||||
Comments.ingameMenuConfigButtonRow);
|
Comments.ingameMenuConfigButtonRow);
|
||||||
public ConfigInt ingameMenuConfigButtonOffsetX = i(-4, Integer.MIN_VALUE, Integer.MAX_VALUE, "ingameMenuConfigButtonOffsetX",
|
public final ConfigInt ingameMenuConfigButtonOffsetX = i(-4, Integer.MIN_VALUE, Integer.MAX_VALUE, "ingameMenuConfigButtonOffsetX",
|
||||||
Comments.ingameMenuConfigButtonOffsetX);
|
Comments.ingameMenuConfigButtonOffsetX);
|
||||||
public ConfigBool ignoreFabulousWarning = b(false, "ignoreFabulousWarning",
|
public final ConfigBool ignoreFabulousWarning = b(false, "ignoreFabulousWarning",
|
||||||
Comments.ignoreFabulousWarning);
|
Comments.ignoreFabulousWarning);
|
||||||
|
|
||||||
//overlay group
|
//overlay group
|
||||||
public ConfigGroup overlay = group(1, "goggleOverlay",
|
public final ConfigGroup overlay = group(1, "goggleOverlay",
|
||||||
Comments.overlay);
|
Comments.overlay);
|
||||||
public ConfigInt overlayOffsetX = i(20, Integer.MIN_VALUE, Integer.MAX_VALUE, "overlayOffsetX",
|
public final ConfigInt overlayOffsetX = i(20, Integer.MIN_VALUE, Integer.MAX_VALUE, "overlayOffsetX",
|
||||||
Comments.overlayOffset);
|
Comments.overlayOffset);
|
||||||
public ConfigInt overlayOffsetY = i(0, Integer.MIN_VALUE, Integer.MAX_VALUE, "overlayOffsetY",
|
public final ConfigInt overlayOffsetY = i(0, Integer.MIN_VALUE, Integer.MAX_VALUE, "overlayOffsetY",
|
||||||
Comments.overlayOffset);
|
Comments.overlayOffset);
|
||||||
public ConfigBool overlayCustomColor = b(false, "customColorsOverlay",
|
public final ConfigBool overlayCustomColor = b(false, "customColorsOverlay",
|
||||||
Comments.overlayCustomColor);
|
Comments.overlayCustomColor);
|
||||||
public ConfigInt overlayBackgroundColor = i(0xf0_100010, Integer.MIN_VALUE, Integer.MAX_VALUE, "customBackgroundOverlay",
|
public final ConfigInt overlayBackgroundColor = i(0xf0_100010, Integer.MIN_VALUE, Integer.MAX_VALUE, "customBackgroundOverlay",
|
||||||
Comments.overlayBackgroundColor);
|
Comments.overlayBackgroundColor);
|
||||||
public ConfigInt overlayBorderColorTop = i(0x50_5000ff, Integer.MIN_VALUE, Integer.MAX_VALUE, "customBorderTopOverlay",
|
public final ConfigInt overlayBorderColorTop = i(0x50_5000ff, Integer.MIN_VALUE, Integer.MAX_VALUE, "customBorderTopOverlay",
|
||||||
Comments.overlayBorderColorTop);
|
Comments.overlayBorderColorTop);
|
||||||
public ConfigInt overlayBorderColorBot = i(0x50_28007f, Integer.MIN_VALUE, Integer.MAX_VALUE, "customBorderBotOverlay",
|
public final ConfigInt overlayBorderColorBot = i(0x50_28007f, Integer.MIN_VALUE, Integer.MAX_VALUE, "customBorderBotOverlay",
|
||||||
Comments.overlayBorderColorBot);
|
Comments.overlayBorderColorBot);
|
||||||
|
|
||||||
//placement assist group
|
//placement assist group
|
||||||
public ConfigGroup placementAssist = group(1, "placementAssist",
|
public final ConfigGroup placementAssist = group(1, "placementAssist",
|
||||||
Comments.placementAssist);
|
Comments.placementAssist);
|
||||||
public ConfigEnum<PlacementIndicatorSetting> placementIndicator = e(PlacementIndicatorSetting.TEXTURE, "indicatorType",
|
public final ConfigEnum<PlacementIndicatorSetting> placementIndicator = e(PlacementIndicatorSetting.TEXTURE, "indicatorType",
|
||||||
Comments.placementIndicator);
|
Comments.placementIndicator);
|
||||||
public ConfigFloat indicatorScale = f(1.0f, 0f, "indicatorScale",
|
public final ConfigFloat indicatorScale = f(1.0f, 0f, "indicatorScale",
|
||||||
Comments.indicatorScale);
|
Comments.indicatorScale);
|
||||||
|
|
||||||
//ponder group
|
//ponder group
|
||||||
public ConfigGroup ponder = group(1, "ponder",
|
public final ConfigGroup ponder = group(1, "ponder",
|
||||||
Comments.ponder);
|
Comments.ponder);
|
||||||
public ConfigBool comfyReading = b(false, "comfyReading",
|
public final ConfigBool comfyReading = b(false, "comfyReading",
|
||||||
Comments.comfyReading);
|
Comments.comfyReading);
|
||||||
|
|
||||||
//sound group
|
//sound group
|
||||||
public ConfigGroup sound = group(1, "sound",
|
public final ConfigGroup sound = group(1, "sound",
|
||||||
Comments.sound);
|
Comments.sound);
|
||||||
public ConfigBool enableAmbientSounds = b(true, "enableAmbientSounds",
|
public final ConfigBool enableAmbientSounds = b(true, "enableAmbientSounds",
|
||||||
Comments.enableAmbientSounds);
|
Comments.enableAmbientSounds);
|
||||||
public ConfigFloat ambientVolumeCap = f(.1f, 0, 1, "ambientVolumeCap",
|
public final ConfigFloat ambientVolumeCap = f(.1f, 0, 1, "ambientVolumeCap",
|
||||||
Comments.ambientVolumeCap);
|
Comments.ambientVolumeCap);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -139,4 +139,5 @@ public class CClient extends ConfigBase {
|
||||||
static String enableAmbientSounds = "Make cogs rumble and machines clatter.";
|
static String enableAmbientSounds = "Make cogs rumble and machines clatter.";
|
||||||
static String ambientVolumeCap = "Maximum volume modifier of Ambient noise";
|
static String ambientVolumeCap = "Maximum volume modifier of Ambient noise";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ package com.simibubi.create.foundation.config;
|
||||||
|
|
||||||
public class CCommon extends ConfigBase {
|
public class CCommon extends ConfigBase {
|
||||||
|
|
||||||
public CWorldGen worldGen = nested(0, CWorldGen::new, Comments.worldGen);
|
public final CWorldGen worldGen = nested(0, CWorldGen::new, Comments.worldGen);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|
|
@ -2,14 +2,14 @@ package com.simibubi.create.foundation.config;
|
||||||
|
|
||||||
public class CCuriosities extends ConfigBase {
|
public class CCuriosities extends ConfigBase {
|
||||||
|
|
||||||
public ConfigInt maxSymmetryWandRange = i(50, 10, "maxSymmetryWandRange", Comments.symmetryRange);
|
public final ConfigInt maxSymmetryWandRange = i(50, 10, "maxSymmetryWandRange", Comments.symmetryRange);
|
||||||
public ConfigInt placementAssistRange = i(12, 3, "placementAssistRange", Comments.placementRange);
|
public final ConfigInt placementAssistRange = i(12, 3, "placementAssistRange", Comments.placementRange);
|
||||||
public ConfigInt toolboxRange = i(10, 1, "toolboxRange", Comments.toolboxRange);
|
public final ConfigInt toolboxRange = i(10, 1, "toolboxRange", Comments.toolboxRange);
|
||||||
public ConfigInt airInBacktank = i(900, 1, "airInBacktank", Comments.maxAirInBacktank);
|
public final ConfigInt airInBacktank = i(900, 1, "airInBacktank", Comments.maxAirInBacktank);
|
||||||
public ConfigInt enchantedBacktankCapacity = i(300, 1, "enchantedBacktankCapacity", Comments.enchantedBacktankCapacity);
|
public final ConfigInt enchantedBacktankCapacity = i(300, 1, "enchantedBacktankCapacity", Comments.enchantedBacktankCapacity);
|
||||||
|
|
||||||
public ConfigInt maxExtendoGripActions = i(1000, 0, "maxExtendoGripActions", Comments.maxExtendoGripActions);
|
public final ConfigInt maxExtendoGripActions = i(1000, 0, "maxExtendoGripActions", Comments.maxExtendoGripActions);
|
||||||
public ConfigInt maxPotatoCannonShots = i(200, 0, "maxPotatoCannonShots", Comments.maxPotatoCannonShots);
|
public final ConfigInt maxPotatoCannonShots = i(200, 0, "maxPotatoCannonShots", Comments.maxPotatoCannonShots);
|
||||||
|
|
||||||
// public ConfigInt zapperUndoLogLength = i(10, 0, "zapperUndoLogLength", Comments.zapperUndoLogLength); NYI
|
// public ConfigInt zapperUndoLogLength = i(10, 0, "zapperUndoLogLength", Comments.zapperUndoLogLength); NYI
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ public class CCuriosities extends ConfigBase {
|
||||||
"Amount of free Extendo Grip actions provided by one filled Copper Backtank. Set to 0 makes Extendo Grips unbreakable";
|
"Amount of free Extendo Grip actions provided by one filled Copper Backtank. Set to 0 makes Extendo Grips unbreakable";
|
||||||
static String maxPotatoCannonShots =
|
static String maxPotatoCannonShots =
|
||||||
"Amount of free Potato Cannon shots provided by one filled Copper Backtank. Set to 0 makes Potato Cannons unbreakable";
|
"Amount of free Potato Cannon shots provided by one filled Copper Backtank. Set to 0 makes Potato Cannons unbreakable";
|
||||||
// static String zapperUndoLogLength = "The maximum amount of operations, a blockzapper can remember for undoing. (0 to disable undo)";
|
// static String zapperUndoLogLength = "The maximum amount of operations a blockzapper can remember for undoing. (0 to disable undo)";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,15 +2,15 @@ package com.simibubi.create.foundation.config;
|
||||||
|
|
||||||
public class CFluids extends ConfigBase {
|
public class CFluids extends ConfigBase {
|
||||||
|
|
||||||
public ConfigInt fluidTankCapacity = i(8, 1, "fluidTankCapacity", Comments.buckets, Comments.fluidTankCapacity);
|
public final ConfigInt fluidTankCapacity = i(8, 1, "fluidTankCapacity", Comments.buckets, Comments.fluidTankCapacity);
|
||||||
public ConfigInt fluidTankMaxHeight = i(32, 1, "fluidTankMaxHeight", Comments.blocks, Comments.fluidTankMaxHeight);
|
public final ConfigInt fluidTankMaxHeight = i(32, 1, "fluidTankMaxHeight", Comments.blocks, Comments.fluidTankMaxHeight);
|
||||||
public ConfigInt mechanicalPumpRange =
|
public final ConfigInt mechanicalPumpRange =
|
||||||
i(16, 1, "mechanicalPumpRange", Comments.blocks, Comments.mechanicalPumpRange);
|
i(16, 1, "mechanicalPumpRange", Comments.blocks, Comments.mechanicalPumpRange);
|
||||||
|
|
||||||
public ConfigInt hosePulleyBlockThreshold = i(10000, -1, "hosePulleyBlockThreshold", Comments.blocks,
|
public final ConfigInt hosePulleyBlockThreshold = i(10000, -1, "hosePulleyBlockThreshold", Comments.blocks,
|
||||||
Comments.toDisable, Comments.hosePulleyBlockThreshold);
|
Comments.toDisable, Comments.hosePulleyBlockThreshold);
|
||||||
public ConfigBool fillInfinite = b(false, "fillInfinite", Comments.fillInfinite);
|
public final ConfigBool fillInfinite = b(false, "fillInfinite", Comments.fillInfinite);
|
||||||
public ConfigInt hosePulleyRange = i(128, 1, "hosePulleyRange", Comments.blocks, Comments.hosePulleyRange);
|
public final ConfigInt hosePulleyRange = i(128, 1, "hosePulleyRange", Comments.blocks, Comments.hosePulleyRange);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|
|
@ -4,51 +4,51 @@ import com.simibubi.create.foundation.config.ui.ConfigAnnotations;
|
||||||
|
|
||||||
public class CKinetics extends ConfigBase {
|
public class CKinetics extends ConfigBase {
|
||||||
|
|
||||||
public ConfigBool disableStress = b(false, "disableStress", Comments.disableStress);
|
public final ConfigBool disableStress = b(false, "disableStress", Comments.disableStress);
|
||||||
public ConfigInt maxBeltLength = i(20, 5, "maxBeltLength", Comments.maxBeltLength);
|
public final ConfigInt maxBeltLength = i(20, 5, "maxBeltLength", Comments.maxBeltLength);
|
||||||
public ConfigInt crushingDamage = i(4, 0, "crushingDamage", Comments.crushingDamage);
|
public final ConfigInt crushingDamage = i(4, 0, "crushingDamage", Comments.crushingDamage);
|
||||||
public ConfigInt maxMotorSpeed = i(256, 64, "maxMotorSpeed", Comments.rpm, Comments.maxMotorSpeed, ConfigAnnotations.RequiresRestart.BOTH.asComment());
|
public final ConfigInt maxMotorSpeed = i(256, 64, "maxMotorSpeed", Comments.rpm, Comments.maxMotorSpeed, ConfigAnnotations.RequiresRestart.BOTH.asComment());
|
||||||
public ConfigInt waterWheelBaseSpeed = i(4, 1, "waterWheelBaseSpeed", Comments.rpm, Comments.waterWheelBaseSpeed);
|
public final ConfigInt waterWheelBaseSpeed = i(4, 1, "waterWheelBaseSpeed", Comments.rpm, Comments.waterWheelBaseSpeed);
|
||||||
public ConfigInt waterWheelFlowSpeed = i(4, 1, "waterWheelFlowSpeed", Comments.rpm, Comments.waterWheelFlowSpeed);
|
public final ConfigInt waterWheelFlowSpeed = i(4, 1, "waterWheelFlowSpeed", Comments.rpm, Comments.waterWheelFlowSpeed);
|
||||||
public ConfigInt furnaceEngineSpeed = i(16, 1, "furnaceEngineSpeed", Comments.rpm, Comments.furnaceEngineSpeed);
|
public final ConfigInt furnaceEngineSpeed = i(16, 1, "furnaceEngineSpeed", Comments.rpm, Comments.furnaceEngineSpeed);
|
||||||
public ConfigInt maxRotationSpeed = i(256, 64, "maxRotationSpeed", Comments.rpm, Comments.maxRotationSpeed);
|
public final ConfigInt maxRotationSpeed = i(256, 64, "maxRotationSpeed", Comments.rpm, Comments.maxRotationSpeed);
|
||||||
public ConfigEnum<DeployerAggroSetting> ignoreDeployerAttacks =
|
public final ConfigEnum<DeployerAggroSetting> ignoreDeployerAttacks =
|
||||||
e(DeployerAggroSetting.CREEPERS, "ignoreDeployerAttacks", Comments.ignoreDeployerAttacks);
|
e(DeployerAggroSetting.CREEPERS, "ignoreDeployerAttacks", Comments.ignoreDeployerAttacks);
|
||||||
public ConfigInt kineticValidationFrequency =
|
public final ConfigInt kineticValidationFrequency =
|
||||||
i(60, 5, "kineticValidationFrequency", Comments.kineticValidationFrequency);
|
i(60, 5, "kineticValidationFrequency", Comments.kineticValidationFrequency);
|
||||||
public ConfigFloat crankHungerMultiplier = f(.01f, 0, 1, "crankHungerMultiplier", Comments.crankHungerMultiplier);
|
public final ConfigFloat crankHungerMultiplier = f(.01f, 0, 1, "crankHungerMultiplier", Comments.crankHungerMultiplier);
|
||||||
public ConfigInt minimumWindmillSails = i(8, 0, "minimumWindmillSails", Comments.minimumWindmillSails);
|
public final ConfigInt minimumWindmillSails = i(8, 0, "minimumWindmillSails", Comments.minimumWindmillSails);
|
||||||
public ConfigInt windmillSailsPerRPM = i(8, 1, "windmillSailsPerRPM", Comments.windmillSailsPerRPM);
|
public final ConfigInt windmillSailsPerRPM = i(8, 1, "windmillSailsPerRPM", Comments.windmillSailsPerRPM);
|
||||||
public ConfigInt maxEjectorDistance = i(32, 0, "maxEjectorDistance", Comments.maxEjectorDistance);
|
public final ConfigInt maxEjectorDistance = i(32, 0, "maxEjectorDistance", Comments.maxEjectorDistance);
|
||||||
public ConfigInt ejectorScanInterval = i(120, 10, "ejectorScanInterval", Comments.ejectorScanInterval);
|
public final ConfigInt ejectorScanInterval = i(120, 10, "ejectorScanInterval", Comments.ejectorScanInterval);
|
||||||
|
|
||||||
public ConfigGroup fan = group(1, "encasedFan", "Encased Fan");
|
public final ConfigGroup fan = group(1, "encasedFan", "Encased Fan");
|
||||||
public ConfigInt fanPushDistance = i(20, 5, "fanPushDistance", Comments.fanPushDistance);
|
public final ConfigInt fanPushDistance = i(20, 5, "fanPushDistance", Comments.fanPushDistance);
|
||||||
public ConfigInt fanPullDistance = i(20, 5, "fanPullDistance", Comments.fanPullDistance);
|
public final ConfigInt fanPullDistance = i(20, 5, "fanPullDistance", Comments.fanPullDistance);
|
||||||
public ConfigInt fanBlockCheckRate = i(30, 10, "fanBlockCheckRate", Comments.fanBlockCheckRate);
|
public final ConfigInt fanBlockCheckRate = i(30, 10, "fanBlockCheckRate", Comments.fanBlockCheckRate);
|
||||||
public ConfigInt fanRotationArgmax = i(256, 64, "fanRotationArgmax", Comments.rpm, Comments.fanRotationArgmax);
|
public final ConfigInt fanRotationArgmax = i(256, 64, "fanRotationArgmax", Comments.rpm, Comments.fanRotationArgmax);
|
||||||
public ConfigInt generatingFanSpeed = i(4, 0, "generatingFanSpeed", Comments.rpm, Comments.generatingFanSpeed);
|
public final ConfigInt generatingFanSpeed = i(4, 0, "generatingFanSpeed", Comments.rpm, Comments.generatingFanSpeed);
|
||||||
public ConfigInt inWorldProcessingTime = i(150, 0, "inWorldProcessingTime", Comments.inWorldProcessingTime);
|
public final ConfigInt inWorldProcessingTime = i(150, 0, "inWorldProcessingTime", Comments.inWorldProcessingTime);
|
||||||
|
|
||||||
public ConfigGroup contraptions = group(1, "contraptions", "Moving Contraptions");
|
public final ConfigGroup contraptions = group(1, "contraptions", "Moving Contraptions");
|
||||||
public ConfigInt maxBlocksMoved = i(2048, 1, "maxBlocksMoved", Comments.maxBlocksMoved);
|
public final ConfigInt maxBlocksMoved = i(2048, 1, "maxBlocksMoved", Comments.maxBlocksMoved);
|
||||||
public ConfigInt maxChassisRange = i(16, 1, "maxChassisRange", Comments.maxChassisRange);
|
public final ConfigInt maxChassisRange = i(16, 1, "maxChassisRange", Comments.maxChassisRange);
|
||||||
public ConfigInt maxPistonPoles = i(64, 1, "maxPistonPoles", Comments.maxPistonPoles);
|
public final ConfigInt maxPistonPoles = i(64, 1, "maxPistonPoles", Comments.maxPistonPoles);
|
||||||
public ConfigInt maxRopeLength = i(128, 1, "maxRopeLength", Comments.maxRopeLength);
|
public final ConfigInt maxRopeLength = i(128, 1, "maxRopeLength", Comments.maxRopeLength);
|
||||||
public ConfigInt maxCartCouplingLength = i(32, 1, "maxCartCouplingLength", Comments.maxCartCouplingLength);
|
public final ConfigInt maxCartCouplingLength = i(32, 1, "maxCartCouplingLength", Comments.maxCartCouplingLength);
|
||||||
public ConfigEnum<SpawnerMovementSetting> spawnerMovement =
|
public final ConfigEnum<SpawnerMovementSetting> spawnerMovement =
|
||||||
e(SpawnerMovementSetting.NO_PICKUP, "movableSpawners", Comments.spawnerMovement);
|
e(SpawnerMovementSetting.NO_PICKUP, "movableSpawners", Comments.spawnerMovement);
|
||||||
|
|
||||||
public CStress stressValues = nested(1, CStress::new, Comments.stress);
|
public final CStress stressValues = nested(1, CStress::new, Comments.stress);
|
||||||
|
|
||||||
public ConfigGroup state = group(1, "stats", Comments.stats);
|
public final ConfigGroup state = group(1, "stats", Comments.stats);
|
||||||
public ConfigFloat mediumSpeed = f(30, 0, 4096, "mediumSpeed", Comments.rpm, Comments.mediumSpeed);
|
public final ConfigFloat mediumSpeed = f(30, 0, 4096, "mediumSpeed", Comments.rpm, Comments.mediumSpeed);
|
||||||
public ConfigFloat fastSpeed = f(100, 0, 65535, "fastSpeed", Comments.rpm, Comments.fastSpeed);
|
public final ConfigFloat fastSpeed = f(100, 0, 65535, "fastSpeed", Comments.rpm, Comments.fastSpeed);
|
||||||
public ConfigFloat mediumStressImpact =
|
public final ConfigFloat mediumStressImpact =
|
||||||
f(4, 0, 4096, "mediumStressImpact", Comments.su, Comments.mediumStressImpact);
|
f(4, 0, 4096, "mediumStressImpact", Comments.su, Comments.mediumStressImpact);
|
||||||
public ConfigFloat highStressImpact = f(8, 0, 65535, "highStressImpact", Comments.su, Comments.highStressImpact);
|
public final ConfigFloat highStressImpact = f(8, 0, 65535, "highStressImpact", Comments.su, Comments.highStressImpact);
|
||||||
public ConfigFloat mediumCapacity = f(128, 0, 4096, "mediumCapacity", Comments.su, Comments.mediumCapacity);
|
public final ConfigFloat mediumCapacity = f(128, 0, 4096, "mediumCapacity", Comments.su, Comments.mediumCapacity);
|
||||||
public ConfigFloat highCapacity = f(512, 0, 65535, "highCapacity", Comments.su, Comments.highCapacity);
|
public final ConfigFloat highCapacity = f(512, 0, 65535, "highCapacity", Comments.su, Comments.highCapacity);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|
|
@ -2,11 +2,11 @@ package com.simibubi.create.foundation.config;
|
||||||
|
|
||||||
public class CLogistics extends ConfigBase {
|
public class CLogistics extends ConfigBase {
|
||||||
|
|
||||||
public ConfigInt defaultExtractionLimit = i(64, 1, 64, "defaultExtractionLimit", Comments.defaultExtractionLimit);
|
public final ConfigInt defaultExtractionLimit = i(64, 1, 64, "defaultExtractionLimit", Comments.defaultExtractionLimit);
|
||||||
public ConfigInt defaultExtractionTimer = i(8, 1, "defaultExtractionTimer", Comments.defaultExtractionTimer);
|
public final ConfigInt defaultExtractionTimer = i(8, 1, "defaultExtractionTimer", Comments.defaultExtractionTimer);
|
||||||
public ConfigInt psiTimeout = i(20, 1, "psiTimeout", Comments.psiTimeout);
|
public final ConfigInt psiTimeout = i(20, 1, "psiTimeout", Comments.psiTimeout);
|
||||||
public ConfigInt mechanicalArmRange = i(5, 1, "mechanicalArmRange", Comments.mechanicalArmRange);
|
public final ConfigInt mechanicalArmRange = i(5, 1, "mechanicalArmRange", Comments.mechanicalArmRange);
|
||||||
public ConfigInt linkRange = i(128, 1, "linkRange", Comments.linkRange);
|
public final ConfigInt linkRange = i(128, 1, "linkRange", Comments.linkRange);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|
|
@ -2,22 +2,22 @@ package com.simibubi.create.foundation.config;
|
||||||
|
|
||||||
public class CRecipes extends ConfigBase {
|
public class CRecipes extends ConfigBase {
|
||||||
|
|
||||||
public ConfigBool bulkPressing = b(false, "bulkPressing", Comments.bulkPressing);
|
public final ConfigBool bulkPressing = b(false, "bulkPressing", Comments.bulkPressing);
|
||||||
public ConfigBool bulkCutting = b(false, "bulkCutting", Comments.bulkCutting);
|
public final ConfigBool bulkCutting = b(false, "bulkCutting", Comments.bulkCutting);
|
||||||
public ConfigBool allowShapelessInMixer = b(true, "allowShapelessInMixer", Comments.allowShapelessInMixer);
|
public final ConfigBool allowShapelessInMixer = b(true, "allowShapelessInMixer", Comments.allowShapelessInMixer);
|
||||||
public ConfigBool allowShapedSquareInPress = b(true, "allowShapedSquareInPress", Comments.allowShapedSquareInPress);
|
public final ConfigBool allowShapedSquareInPress = b(true, "allowShapedSquareInPress", Comments.allowShapedSquareInPress);
|
||||||
public ConfigBool allowRegularCraftingInCrafter =
|
public final ConfigBool allowRegularCraftingInCrafter =
|
||||||
b(true, "allowRegularCraftingInCrafter", Comments.allowRegularCraftingInCrafter);
|
b(true, "allowRegularCraftingInCrafter", Comments.allowRegularCraftingInCrafter);
|
||||||
public ConfigBool allowBiggerFireworksInCrafter =
|
public final ConfigBool allowBiggerFireworksInCrafter =
|
||||||
b(false, "allowBiggerFireworksInCrafter", Comments.allowBiggerFireworksInCrafter);
|
b(false, "allowBiggerFireworksInCrafter", Comments.allowBiggerFireworksInCrafter);
|
||||||
public ConfigBool allowStonecuttingOnSaw = b(true, "allowStonecuttingOnSaw", Comments.allowStonecuttingOnSaw);
|
public final ConfigBool allowStonecuttingOnSaw = b(true, "allowStonecuttingOnSaw", Comments.allowStonecuttingOnSaw);
|
||||||
public ConfigBool allowWoodcuttingOnSaw = b(true, "allowWoodcuttingOnSaw", Comments.allowWoodcuttingOnSaw);
|
public final ConfigBool allowWoodcuttingOnSaw = b(true, "allowWoodcuttingOnSaw", Comments.allowWoodcuttingOnSaw);
|
||||||
public ConfigBool allowCastingBySpout = b(true, "allowCastingBySpout", Comments.allowCastingBySpout);
|
public final ConfigBool allowCastingBySpout = b(true, "allowCastingBySpout", Comments.allowCastingBySpout);
|
||||||
public ConfigInt lightSourceCountForRefinedRadiance =
|
public final ConfigInt lightSourceCountForRefinedRadiance =
|
||||||
i(10, 1, "lightSourceCountForRefinedRadiance", Comments.refinedRadiance);
|
i(10, 1, "lightSourceCountForRefinedRadiance", Comments.refinedRadiance);
|
||||||
public ConfigBool enableRefinedRadianceRecipe =
|
public final ConfigBool enableRefinedRadianceRecipe =
|
||||||
b(true, "enableRefinedRadianceRecipe", Comments.refinedRadianceRecipe);
|
b(true, "enableRefinedRadianceRecipe", Comments.refinedRadianceRecipe);
|
||||||
public ConfigBool enableShadowSteelRecipe = b(true, "enableShadowSteelRecipe", Comments.shadowSteelRecipe);
|
public final ConfigBool enableShadowSteelRecipe = b(true, "enableShadowSteelRecipe", Comments.shadowSteelRecipe);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|
|
@ -2,19 +2,19 @@ package com.simibubi.create.foundation.config;
|
||||||
|
|
||||||
public class CSchematics extends ConfigBase {
|
public class CSchematics extends ConfigBase {
|
||||||
|
|
||||||
public ConfigBool creativePrintIncludesAir = b(false, "creativePrintIncludesAir", Comments.creativePrintIncludesAir);
|
public final ConfigBool creativePrintIncludesAir = b(false, "creativePrintIncludesAir", Comments.creativePrintIncludesAir);
|
||||||
public ConfigInt maxSchematics = i(10, 1, "maxSchematics", Comments.maxSchematics);
|
public final ConfigInt maxSchematics = i(10, 1, "maxSchematics", Comments.maxSchematics);
|
||||||
public ConfigInt maxTotalSchematicSize = i(256, 16, "maxSchematics", Comments.kb, Comments.maxSize);
|
public final ConfigInt maxTotalSchematicSize = i(256, 16, "maxSchematics", Comments.kb, Comments.maxSize);
|
||||||
public ConfigInt maxSchematicPacketSize =
|
public final ConfigInt maxSchematicPacketSize =
|
||||||
i(1024, 256, 32767, "maxSchematicPacketSize", Comments.b, Comments.maxPacketSize);
|
i(1024, 256, 32767, "maxSchematicPacketSize", Comments.b, Comments.maxPacketSize);
|
||||||
public ConfigInt schematicIdleTimeout = i(600, 100, "schematicIdleTimeout", Comments.idleTimeout);
|
public final ConfigInt schematicIdleTimeout = i(600, 100, "schematicIdleTimeout", Comments.idleTimeout);
|
||||||
|
|
||||||
public ConfigGroup schematicannon = group(0, "schematicannon", "Schematicannon");
|
public final ConfigGroup schematicannon = group(0, "schematicannon", "Schematicannon");
|
||||||
public ConfigInt schematicannonDelay = i(10, 1, "schematicannonDelay", Comments.delay);
|
public final ConfigInt schematicannonDelay = i(10, 1, "schematicannonDelay", Comments.delay);
|
||||||
public ConfigInt schematicannonSkips = i(10, 1, "schematicannonSkips", Comments.skips);
|
public final ConfigInt schematicannonSkips = i(10, 1, "schematicannonSkips", Comments.skips);
|
||||||
public ConfigFloat schematicannonGunpowderWorth =
|
public final ConfigFloat schematicannonGunpowderWorth =
|
||||||
f(20, 0, 100, "schematicannonGunpowderWorth", Comments.gunpowderWorth);
|
f(20, 0, 100, "schematicannonGunpowderWorth", Comments.gunpowderWorth);
|
||||||
public ConfigFloat schematicannonFuelUsage = f(0.05f, 0, 100, "schematicannonFuelUsage", Comments.fuelUsage);
|
public final ConfigFloat schematicannonFuelUsage = f(0.05f, 0, 100, "schematicannonFuelUsage", Comments.fuelUsage);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|
|
@ -2,16 +2,16 @@ package com.simibubi.create.foundation.config;
|
||||||
|
|
||||||
public class CServer extends ConfigBase {
|
public class CServer extends ConfigBase {
|
||||||
|
|
||||||
public ConfigGroup infrastructure = group(0, "infrastructure", Comments.infrastructure);
|
public final ConfigGroup infrastructure = group(0, "infrastructure", Comments.infrastructure);
|
||||||
public ConfigInt tickrateSyncTimer =
|
public final ConfigInt tickrateSyncTimer =
|
||||||
i(20, 5, "tickrateSyncTimer", "[in Ticks]", Comments.tickrateSyncTimer, Comments.tickrateSyncTimer2);
|
i(20, 5, "tickrateSyncTimer", "[in Ticks]", Comments.tickrateSyncTimer, Comments.tickrateSyncTimer2);
|
||||||
|
|
||||||
public CRecipes recipes = nested(0, CRecipes::new, Comments.recipes);
|
public final CRecipes recipes = nested(0, CRecipes::new, Comments.recipes);
|
||||||
public CKinetics kinetics = nested(0, CKinetics::new, Comments.kinetics);
|
public final CKinetics kinetics = nested(0, CKinetics::new, Comments.kinetics);
|
||||||
public CFluids fluids = nested(0, CFluids::new, Comments.fluids);
|
public final CFluids fluids = nested(0, CFluids::new, Comments.fluids);
|
||||||
public CLogistics logistics = nested(0, CLogistics::new, Comments.logistics);
|
public final CLogistics logistics = nested(0, CLogistics::new, Comments.logistics);
|
||||||
public CSchematics schematics = nested(0, CSchematics::new, Comments.schematics);
|
public final CSchematics schematics = nested(0, CSchematics::new, Comments.schematics);
|
||||||
public CCuriosities curiosities = nested(0, CCuriosities::new, Comments.curiosities);
|
public final CCuriosities curiosities = nested(0, CCuriosities::new, Comments.curiosities);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|
|
@ -16,8 +16,8 @@ import net.minecraftforge.common.ForgeConfigSpec.ConfigValue;
|
||||||
|
|
||||||
public class CStress extends ConfigBase implements IStressValueProvider {
|
public class CStress extends ConfigBase implements IStressValueProvider {
|
||||||
|
|
||||||
private Map<ResourceLocation, ConfigValue<Double>> capacities = new HashMap<>();
|
private final Map<ResourceLocation, ConfigValue<Double>> capacities = new HashMap<>();
|
||||||
private Map<ResourceLocation, ConfigValue<Double>> impacts = new HashMap<>();
|
private final Map<ResourceLocation, ConfigValue<Double>> impacts = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void registerAll(Builder builder) {
|
protected void registerAll(Builder builder) {
|
||||||
|
@ -62,12 +62,14 @@ public class CStress extends ConfigBase implements IStressValueProvider {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean hasImpact(Block block) {
|
public boolean hasImpact(Block block) {
|
||||||
block = redirectValues(block);
|
block = redirectValues(block);
|
||||||
ResourceLocation key = block.getRegistryName();
|
ResourceLocation key = block.getRegistryName();
|
||||||
return getImpacts().containsKey(key);
|
return getImpacts().containsKey(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean hasCapacity(Block block) {
|
public boolean hasCapacity(Block block) {
|
||||||
block = redirectValues(block);
|
block = redirectValues(block);
|
||||||
ResourceLocation key = block.getRegistryName();
|
ResourceLocation key = block.getRegistryName();
|
||||||
|
|
|
@ -6,7 +6,7 @@ import net.minecraftforge.common.ForgeConfigSpec.Builder;
|
||||||
|
|
||||||
public class CWorldGen extends ConfigBase {
|
public class CWorldGen extends ConfigBase {
|
||||||
|
|
||||||
public ConfigBool disable = b(false, "disableWorldGen", Comments.disable);
|
public final ConfigBool disable = b(false, "disableWorldGen", Comments.disable);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void registerAll(Builder builder) {
|
protected void registerAll(Builder builder) {
|
||||||
|
|
|
@ -19,7 +19,7 @@ import com.simibubi.create.foundation.block.connected.CTModel;
|
||||||
import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour;
|
import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour;
|
||||||
import com.simibubi.create.foundation.block.render.ColoredVertexModel;
|
import com.simibubi.create.foundation.block.render.ColoredVertexModel;
|
||||||
import com.simibubi.create.foundation.block.render.IBlockVertexColor;
|
import com.simibubi.create.foundation.block.render.IBlockVertexColor;
|
||||||
import com.simibubi.create.foundation.item.render.CustomRenderedItemModel;
|
import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer;
|
||||||
import com.tterrag.registrate.AbstractRegistrate;
|
import com.tterrag.registrate.AbstractRegistrate;
|
||||||
import com.tterrag.registrate.builders.BlockBuilder;
|
import com.tterrag.registrate.builders.BlockBuilder;
|
||||||
import com.tterrag.registrate.builders.Builder;
|
import com.tterrag.registrate.builders.Builder;
|
||||||
|
@ -36,6 +36,7 @@ import com.tterrag.registrate.util.nullness.NonNullUnaryOperator;
|
||||||
import net.minecraft.block.AbstractBlock.Properties;
|
import net.minecraft.block.AbstractBlock.Properties;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.client.renderer.model.IBakedModel;
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
|
import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityClassification;
|
import net.minecraft.entity.EntityClassification;
|
||||||
import net.minecraft.entity.EntityType;
|
import net.minecraft.entity.EntityType;
|
||||||
|
@ -216,11 +217,14 @@ public class CreateRegistrate extends AbstractRegistrate<CreateRegistrate> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <T extends Item, P> NonNullUnaryOperator<ItemBuilder<T, P>> customRenderedItem(
|
public static <T extends Item, P> NonNullUnaryOperator<ItemBuilder<T, P>> customRenderedItem(
|
||||||
Supplier<NonNullFunction<IBakedModel, ? extends CustomRenderedItemModel>> func) {
|
Supplier<Supplier<CustomRenderedItemModelRenderer<?>>> supplier) {
|
||||||
return b -> b.properties(p -> p.setISTER(() -> () -> func.get()
|
return b -> b.properties(p -> p.setISTER(() -> () -> supplier.get().get()))
|
||||||
.apply(null)
|
.onRegister(entry -> onClient(() -> () -> {
|
||||||
.createRenderer()))
|
ItemStackTileEntityRenderer ister = entry.getItemStackTileEntityRenderer();
|
||||||
.onRegister(entry -> onClient(() -> () -> registerCustomRenderedItem(entry, func)));
|
if (ister instanceof CustomRenderedItemModelRenderer) {
|
||||||
|
registerCustomRenderedItem(entry, (CustomRenderedItemModelRenderer<?>) ister);
|
||||||
|
}
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void onClient(Supplier<Runnable> toRun) {
|
protected static void onClient(Supplier<Runnable> toRun) {
|
||||||
|
@ -229,41 +233,41 @@ public class CreateRegistrate extends AbstractRegistrate<CreateRegistrate> {
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
private static void registerCTBehviour(Block entry, ConnectedTextureBehaviour behavior) {
|
private static void registerCTBehviour(Block entry, ConnectedTextureBehaviour behavior) {
|
||||||
CreateClient.getCustomBlockModels()
|
CreateClient.MODEL_SWAPPER.getCustomBlockModels()
|
||||||
.register(entry.delegate, model -> new CTModel(model, behavior));
|
.register(entry.delegate, model -> new CTModel(model, behavior));
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
private static <T extends Block> void registerCasingConnectivity(T entry,
|
private static <T extends Block> void registerCasingConnectivity(T entry,
|
||||||
BiConsumer<T, CasingConnectivity> consumer) {
|
BiConsumer<T, CasingConnectivity> consumer) {
|
||||||
consumer.accept(entry, CreateClient.getCasingConnectivity());
|
consumer.accept(entry, CreateClient.CASING_CONNECTIVITY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
private static void registerBlockVertexColor(Block entry, IBlockVertexColor colorFunc) {
|
private static void registerBlockVertexColor(Block entry, IBlockVertexColor colorFunc) {
|
||||||
CreateClient.getCustomBlockModels()
|
CreateClient.MODEL_SWAPPER.getCustomBlockModels()
|
||||||
.register(entry.delegate, model -> new ColoredVertexModel(model, colorFunc));
|
.register(entry.delegate, model -> new ColoredVertexModel(model, colorFunc));
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
private static void registerBlockModel(Block entry,
|
private static void registerBlockModel(Block entry,
|
||||||
Supplier<NonNullFunction<IBakedModel, ? extends IBakedModel>> func) {
|
Supplier<NonNullFunction<IBakedModel, ? extends IBakedModel>> func) {
|
||||||
CreateClient.getCustomBlockModels()
|
CreateClient.MODEL_SWAPPER.getCustomBlockModels()
|
||||||
.register(entry.delegate, func.get());
|
.register(entry.delegate, func.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
private static void registerItemModel(Item entry,
|
private static void registerItemModel(Item entry,
|
||||||
Supplier<NonNullFunction<IBakedModel, ? extends IBakedModel>> func) {
|
Supplier<NonNullFunction<IBakedModel, ? extends IBakedModel>> func) {
|
||||||
CreateClient.getCustomItemModels()
|
CreateClient.MODEL_SWAPPER.getCustomItemModels()
|
||||||
.register(entry.delegate, func.get());
|
.register(entry.delegate, func.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
private static void registerCustomRenderedItem(Item entry,
|
private static void registerCustomRenderedItem(Item entry,
|
||||||
Supplier<NonNullFunction<IBakedModel, ? extends CustomRenderedItemModel>> func) {
|
CustomRenderedItemModelRenderer<?> renderer) {
|
||||||
CreateClient.getCustomRenderedItems()
|
CreateClient.MODEL_SWAPPER.getCustomRenderedItems()
|
||||||
.register(entry.delegate, func.get());
|
.register(entry.delegate, renderer::createModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,6 @@ import com.simibubi.create.AllTags.AllItemTags;
|
||||||
import com.simibubi.create.Create;
|
import com.simibubi.create.Create;
|
||||||
import com.simibubi.create.content.AllSections;
|
import com.simibubi.create.content.AllSections;
|
||||||
import com.simibubi.create.content.palettes.AllPaletteBlocks;
|
import com.simibubi.create.content.palettes.AllPaletteBlocks;
|
||||||
import com.simibubi.create.foundation.data.recipe.CreateRecipeProvider.I;
|
|
||||||
import com.simibubi.create.foundation.utility.Lang;
|
import com.simibubi.create.foundation.utility.Lang;
|
||||||
import com.tterrag.registrate.util.entry.BlockEntry;
|
import com.tterrag.registrate.util.entry.BlockEntry;
|
||||||
import com.tterrag.registrate.util.entry.ItemEntry;
|
import com.tterrag.registrate.util.entry.ItemEntry;
|
||||||
|
|
|
@ -6,7 +6,7 @@ import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack.Entry;
|
import com.mojang.blaze3d.matrix.MatrixStack.Entry;
|
||||||
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||||
import com.simibubi.create.foundation.renderState.RenderTypes;
|
import com.simibubi.create.foundation.render.RenderTypes;
|
||||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||||
import com.simibubi.create.foundation.utility.Color;
|
import com.simibubi.create.foundation.utility.Color;
|
||||||
import com.simibubi.create.foundation.utility.Iterate;
|
import com.simibubi.create.foundation.utility.Iterate;
|
||||||
|
|
|
@ -29,7 +29,7 @@ public class CustomItemModels {
|
||||||
registered.add(Pair.of(entry, behaviour));
|
registered.add(Pair.of(entry, behaviour));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void foreach(NonNullBiConsumer<Item, NonNullFunction<IBakedModel, ? extends IBakedModel>> consumer) {
|
public void forEach(NonNullBiConsumer<Item, NonNullFunction<IBakedModel, ? extends IBakedModel>> consumer) {
|
||||||
loadEntriesIfMissing();
|
loadEntriesIfMissing();
|
||||||
customModels.forEach(consumer);
|
customModels.forEach(consumer);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,23 +10,21 @@ import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import net.minecraft.client.renderer.model.IBakedModel;
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.model.ItemCameraTransforms;
|
import net.minecraft.client.renderer.model.ItemCameraTransforms;
|
||||||
import net.minecraft.client.renderer.model.ModelRotation;
|
import net.minecraft.client.renderer.model.ModelRotation;
|
||||||
import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer;
|
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraftforge.client.event.ModelBakeEvent;
|
import net.minecraftforge.client.event.ModelBakeEvent;
|
||||||
import net.minecraftforge.client.model.BakedModelWrapper;
|
import net.minecraftforge.client.model.BakedModelWrapper;
|
||||||
|
import net.minecraftforge.client.model.ModelLoader;
|
||||||
|
|
||||||
public abstract class CustomRenderedItemModel extends BakedModelWrapper<IBakedModel> {
|
public abstract class CustomRenderedItemModel extends BakedModelWrapper<IBakedModel> {
|
||||||
|
|
||||||
protected String namespace;
|
protected String namespace;
|
||||||
protected String basePath;
|
protected String basePath;
|
||||||
protected Map<String, IBakedModel> partials = new HashMap<>();
|
protected Map<String, IBakedModel> partials = new HashMap<>();
|
||||||
protected ItemStackTileEntityRenderer renderer;
|
|
||||||
|
|
||||||
public CustomRenderedItemModel(IBakedModel template, String namespace, String basePath) {
|
public CustomRenderedItemModel(IBakedModel template, String namespace, String basePath) {
|
||||||
super(template);
|
super(template);
|
||||||
this.namespace = namespace;
|
this.namespace = namespace;
|
||||||
this.basePath = basePath;
|
this.basePath = basePath;
|
||||||
this.renderer = createRenderer();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -36,7 +34,8 @@ public abstract class CustomRenderedItemModel extends BakedModelWrapper<IBakedMo
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IBakedModel handlePerspective(ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat) {
|
public IBakedModel handlePerspective(ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat) {
|
||||||
// Super call returns originalModel, but we want to return this, else ISTER won't be used.
|
// Super call returns originalModel, but we want to return this, else ISTER
|
||||||
|
// won't be used.
|
||||||
super.handlePerspective(cameraTransformType, mat);
|
super.handlePerspective(cameraTransformType, mat);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -45,39 +44,32 @@ public abstract class CustomRenderedItemModel extends BakedModelWrapper<IBakedMo
|
||||||
return originalModel;
|
return originalModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStackTileEntityRenderer getRenderer() {
|
public IBakedModel getPartial(String name) {
|
||||||
return renderer;
|
return partials.get(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract ItemStackTileEntityRenderer createRenderer();
|
|
||||||
|
|
||||||
public final List<ResourceLocation> getModelLocations() {
|
public final List<ResourceLocation> getModelLocations() {
|
||||||
return partials.keySet().stream().map(this::getPartialModelLocation).collect(Collectors.toList());
|
return partials.keySet().stream().map(this::getPartialModelLocation).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void addPartials(String... partials) {
|
protected void addPartials(String... partials) {
|
||||||
this.partials.clear();
|
|
||||||
for (String name : partials)
|
for (String name : partials)
|
||||||
this.partials.put(name, null);
|
this.partials.put(name, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CustomRenderedItemModel loadPartials(ModelBakeEvent event) {
|
public void loadPartials(ModelBakeEvent event) {
|
||||||
|
ModelLoader modelLoader = event.getModelLoader();
|
||||||
for (String name : partials.keySet())
|
for (String name : partials.keySet())
|
||||||
partials.put(name, loadModel(event, name));
|
partials.put(name, loadPartial(modelLoader, name));
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
private IBakedModel loadModel(ModelBakeEvent event, String name) {
|
protected IBakedModel loadPartial(ModelLoader modelLoader, String name) {
|
||||||
return event.getModelLoader().bake(getPartialModelLocation(name), ModelRotation.X0_Y0);
|
return modelLoader.bake(getPartialModelLocation(name), ModelRotation.X0_Y0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ResourceLocation getPartialModelLocation(String name) {
|
protected ResourceLocation getPartialModelLocation(String name) {
|
||||||
return new ResourceLocation(namespace, "item/" + basePath + "/" + name);
|
return new ResourceLocation(namespace, "item/" + basePath + "/" + name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IBakedModel getPartial(String name) {
|
|
||||||
return partials.get(name);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||||
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.model.ItemCameraTransforms;
|
import net.minecraft.client.renderer.model.ItemCameraTransforms;
|
||||||
import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer;
|
import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
@ -13,9 +14,9 @@ public abstract class CustomRenderedItemModelRenderer<M extends CustomRenderedIt
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
public void renderByItem(ItemStack stack, ItemCameraTransforms.TransformType transformType, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) {
|
public void renderByItem(ItemStack stack, ItemCameraTransforms.TransformType transformType, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) {
|
||||||
M mainModel = ((M) Minecraft.getInstance()
|
M mainModel = (M) Minecraft.getInstance()
|
||||||
.getItemRenderer()
|
.getItemRenderer()
|
||||||
.getModel(stack, null, null));
|
.getModel(stack, null, null);
|
||||||
PartialItemModelRenderer renderer = PartialItemModelRenderer.of(stack, transformType, ms, buffer, overlay);
|
PartialItemModelRenderer renderer = PartialItemModelRenderer.of(stack, transformType, ms, buffer, overlay);
|
||||||
|
|
||||||
ms.pushPose();
|
ms.pushPose();
|
||||||
|
@ -27,4 +28,6 @@ public abstract class CustomRenderedItemModelRenderer<M extends CustomRenderedIt
|
||||||
protected abstract void render(ItemStack stack, M model, PartialItemModelRenderer renderer, ItemCameraTransforms.TransformType transformType,
|
protected abstract void render(ItemStack stack, M model, PartialItemModelRenderer renderer, ItemCameraTransforms.TransformType transformType,
|
||||||
MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay);
|
MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay);
|
||||||
|
|
||||||
|
public abstract M createModel(IBakedModel originalModel);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ public class CustomRenderedItems {
|
||||||
registered.add(Pair.of(entry, behaviour));
|
registered.add(Pair.of(entry, behaviour));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void foreach(
|
public void forEach(
|
||||||
NonNullBiConsumer<Item, NonNullFunction<IBakedModel, ? extends CustomRenderedItemModel>> consumer) {
|
NonNullBiConsumer<Item, NonNullFunction<IBakedModel, ? extends CustomRenderedItemModel>> consumer) {
|
||||||
loadEntriesIfMissing();
|
loadEntriesIfMissing();
|
||||||
customModels.forEach(consumer);
|
customModels.forEach(consumer);
|
||||||
|
|
|
@ -4,7 +4,7 @@ import java.util.Random;
|
||||||
|
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||||
import com.simibubi.create.foundation.renderState.RenderTypes;
|
import com.simibubi.create.foundation.render.RenderTypes;
|
||||||
import com.simibubi.create.foundation.utility.Iterate;
|
import com.simibubi.create.foundation.utility.Iterate;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
@ -20,27 +20,23 @@ import net.minecraftforge.client.model.data.IModelData;
|
||||||
|
|
||||||
public class PartialItemModelRenderer {
|
public class PartialItemModelRenderer {
|
||||||
|
|
||||||
static PartialItemModelRenderer instance;
|
private static final PartialItemModelRenderer INSTANCE = new PartialItemModelRenderer();
|
||||||
|
|
||||||
ItemStack stack;
|
private final Random random = new Random();
|
||||||
int overlay;
|
|
||||||
MatrixStack ms;
|
|
||||||
ItemCameraTransforms.TransformType transformType;
|
|
||||||
IRenderTypeBuffer buffer;
|
|
||||||
|
|
||||||
static PartialItemModelRenderer get() {
|
private ItemStack stack;
|
||||||
if (instance == null)
|
private ItemCameraTransforms.TransformType transformType;
|
||||||
instance = new PartialItemModelRenderer();
|
private MatrixStack ms;
|
||||||
return instance;
|
private IRenderTypeBuffer buffer;
|
||||||
}
|
private int overlay;
|
||||||
|
|
||||||
public static PartialItemModelRenderer of(ItemStack stack, ItemCameraTransforms.TransformType transformType,
|
public static PartialItemModelRenderer of(ItemStack stack, ItemCameraTransforms.TransformType transformType,
|
||||||
MatrixStack ms, IRenderTypeBuffer buffer, int overlay) {
|
MatrixStack ms, IRenderTypeBuffer buffer, int overlay) {
|
||||||
PartialItemModelRenderer instance = get();
|
PartialItemModelRenderer instance = INSTANCE;
|
||||||
instance.stack = stack;
|
instance.stack = stack;
|
||||||
instance.buffer = buffer;
|
|
||||||
instance.ms = ms;
|
|
||||||
instance.transformType = transformType;
|
instance.transformType = transformType;
|
||||||
|
instance.ms = ms;
|
||||||
|
instance.buffer = buffer;
|
||||||
instance.overlay = overlay;
|
instance.overlay = overlay;
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
@ -79,20 +75,19 @@ public class PartialItemModelRenderer {
|
||||||
ms.popPose();
|
ms.popPose();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void renderBakedItemModel(IBakedModel model, int light, MatrixStack ms, IVertexBuilder p_229114_6_) {
|
private void renderBakedItemModel(IBakedModel model, int light, MatrixStack ms, IVertexBuilder buffer) {
|
||||||
ItemRenderer ir = Minecraft.getInstance()
|
ItemRenderer ir = Minecraft.getInstance()
|
||||||
.getItemRenderer();
|
.getItemRenderer();
|
||||||
Random random = new Random();
|
|
||||||
IModelData data = EmptyModelData.INSTANCE;
|
IModelData data = EmptyModelData.INSTANCE;
|
||||||
|
|
||||||
for (Direction direction : Iterate.directions) {
|
for (Direction direction : Iterate.directions) {
|
||||||
random.setSeed(42L);
|
random.setSeed(42L);
|
||||||
ir.renderQuadList(ms, p_229114_6_, model.getQuads(null, direction, random, data), stack, light,
|
ir.renderQuadList(ms, buffer, model.getQuads(null, direction, random, data), stack, light,
|
||||||
overlay);
|
overlay);
|
||||||
}
|
}
|
||||||
|
|
||||||
random.setSeed(42L);
|
random.setSeed(42L);
|
||||||
ir.renderQuadList(ms, p_229114_6_, model.getQuads(null, null, random, data), stack, light, overlay);
|
ir.renderQuadList(ms, buffer, model.getQuads(null, null, random, data), stack, light, overlay);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import com.simibubi.create.foundation.BreakProgressHook;
|
import com.simibubi.create.foundation.block.BreakProgressHook;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.WorldRenderer;
|
import net.minecraft.client.renderer.WorldRenderer;
|
||||||
import net.minecraft.client.world.ClientWorld;
|
import net.minecraft.client.world.ClientWorld;
|
||||||
|
|
|
@ -26,7 +26,7 @@ import com.simibubi.create.foundation.ponder.elements.PonderOverlayElement;
|
||||||
import com.simibubi.create.foundation.ponder.elements.PonderSceneElement;
|
import com.simibubi.create.foundation.ponder.elements.PonderSceneElement;
|
||||||
import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
|
import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
|
||||||
import com.simibubi.create.foundation.ponder.instructions.HideAllInstruction;
|
import com.simibubi.create.foundation.ponder.instructions.HideAllInstruction;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||||
import com.simibubi.create.foundation.utility.Pair;
|
import com.simibubi.create.foundation.utility.Pair;
|
||||||
import com.simibubi.create.foundation.utility.VecHelper;
|
import com.simibubi.create.foundation.utility.VecHelper;
|
||||||
|
|
|
@ -29,7 +29,7 @@ import com.simibubi.create.foundation.ponder.content.PonderTag;
|
||||||
import com.simibubi.create.foundation.ponder.content.PonderTagScreen;
|
import com.simibubi.create.foundation.ponder.content.PonderTagScreen;
|
||||||
import com.simibubi.create.foundation.ponder.elements.TextWindowElement;
|
import com.simibubi.create.foundation.ponder.elements.TextWindowElement;
|
||||||
import com.simibubi.create.foundation.ponder.ui.PonderButton;
|
import com.simibubi.create.foundation.ponder.ui.PonderButton;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
import com.simibubi.create.foundation.utility.Color;
|
import com.simibubi.create.foundation.utility.Color;
|
||||||
import com.simibubi.create.foundation.utility.Couple;
|
import com.simibubi.create.foundation.utility.Couple;
|
||||||
import com.simibubi.create.foundation.utility.FontHelper;
|
import com.simibubi.create.foundation.utility.FontHelper;
|
||||||
|
|
|
@ -14,7 +14,7 @@ import com.simibubi.create.content.contraptions.relays.belt.BeltBlock;
|
||||||
import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity;
|
import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity;
|
||||||
import com.simibubi.create.content.schematics.SchematicWorld;
|
import com.simibubi.create.content.schematics.SchematicWorld;
|
||||||
import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
|
import com.simibubi.create.foundation.ponder.elements.WorldSectionElement;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
|
import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
|
||||||
import com.simibubi.create.foundation.utility.worldWrappers.WrappedClientWorld;
|
import com.simibubi.create.foundation.utility.worldWrappers.WrappedClientWorld;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package com.simibubi.create.foundation.renderState;
|
package com.simibubi.create.foundation.render;
|
||||||
|
|
||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package com.simibubi.create.foundation.renderState;
|
package com.simibubi.create.foundation.render;
|
||||||
|
|
||||||
import java.util.SortedMap;
|
import java.util.SortedMap;
|
||||||
|
|
|
@ -3,7 +3,7 @@ package com.simibubi.create.foundation.tileEntity.behaviour;
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.simibubi.create.content.logistics.item.filter.FilterItem;
|
import com.simibubi.create.content.logistics.item.filter.FilterItem;
|
||||||
import com.simibubi.create.foundation.gui.AllIcons;
|
import com.simibubi.create.foundation.gui.AllIcons;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided;
|
import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided;
|
||||||
import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.INamedIconOptions;
|
import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.INamedIconOptions;
|
||||||
import com.simibubi.create.foundation.utility.Color;
|
import com.simibubi.create.foundation.utility.Color;
|
||||||
|
|
|
@ -90,7 +90,7 @@ public class SmartFluidTankBehaviour extends TileEntityBehaviour {
|
||||||
super.initialize();
|
super.initialize();
|
||||||
if (getWorld().isClientSide)
|
if (getWorld().isClientSide)
|
||||||
return;
|
return;
|
||||||
foreach(ts -> {
|
forEach(ts -> {
|
||||||
ts.fluidLevel.forceNextSync();
|
ts.fluidLevel.forceNextSync();
|
||||||
ts.onFluidStackChanged();
|
ts.onFluidStackChanged();
|
||||||
});
|
});
|
||||||
|
@ -106,7 +106,7 @@ public class SmartFluidTankBehaviour extends TileEntityBehaviour {
|
||||||
updateFluids();
|
updateFluids();
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach(te -> {
|
forEach(te -> {
|
||||||
LerpedFloat fluidLevel = te.getFluidLevel();
|
LerpedFloat fluidLevel = te.getFluidLevel();
|
||||||
if (fluidLevel != null)
|
if (fluidLevel != null)
|
||||||
fluidLevel.tickChaser();
|
fluidLevel.tickChaser();
|
||||||
|
@ -160,7 +160,7 @@ public class SmartFluidTankBehaviour extends TileEntityBehaviour {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void foreach(Consumer<TankSegment> action) {
|
public void forEach(Consumer<TankSegment> action) {
|
||||||
for (TankSegment tankSegment : tanks)
|
for (TankSegment tankSegment : tanks)
|
||||||
action.accept(tankSegment);
|
action.accept(tankSegment);
|
||||||
}
|
}
|
||||||
|
@ -173,7 +173,7 @@ public class SmartFluidTankBehaviour extends TileEntityBehaviour {
|
||||||
public void write(CompoundNBT nbt, boolean clientPacket) {
|
public void write(CompoundNBT nbt, boolean clientPacket) {
|
||||||
super.write(nbt, clientPacket);
|
super.write(nbt, clientPacket);
|
||||||
ListNBT tanksNBT = new ListNBT();
|
ListNBT tanksNBT = new ListNBT();
|
||||||
foreach(ts -> tanksNBT.add(ts.writeNBT()));
|
forEach(ts -> tanksNBT.add(ts.writeNBT()));
|
||||||
nbt.put(getType().getName() + "Tanks", tanksNBT);
|
nbt.put(getType().getName() + "Tanks", tanksNBT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -83,10 +83,13 @@ public class ScrollValueHandler {
|
||||||
|
|
||||||
@OnlyIn(Dist.CLIENT)
|
@OnlyIn(Dist.CLIENT)
|
||||||
public static void tick() {
|
public static void tick() {
|
||||||
|
if (!Minecraft.getInstance()
|
||||||
|
.isPaused()) {
|
||||||
lastPassiveScroll = passiveScroll;
|
lastPassiveScroll = passiveScroll;
|
||||||
wrenchCog.tick();
|
wrenchCog.tick();
|
||||||
passiveScroll += passiveScrollDirection * 0.5;
|
passiveScroll += passiveScrollDirection * 0.5;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected static void applyTo(double delta, ScrollValueBehaviour scrolling) {
|
protected static void applyTo(double delta, ScrollValueBehaviour scrolling) {
|
||||||
scrolling.ticksUntilScrollPacket = 10;
|
scrolling.ticksUntilScrollPacket = 10;
|
||||||
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
package com.simibubi.create.foundation.utility;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
import com.simibubi.create.foundation.block.render.CustomBlockModels;
|
||||||
|
import com.simibubi.create.foundation.item.render.CustomItemModels;
|
||||||
|
import com.simibubi.create.foundation.item.render.CustomRenderedItemModel;
|
||||||
|
import com.simibubi.create.foundation.item.render.CustomRenderedItems;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.renderer.BlockModelShapes;
|
||||||
|
import net.minecraft.client.renderer.model.IBakedModel;
|
||||||
|
import net.minecraft.client.renderer.model.ModelResourceLocation;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraftforge.client.event.ModelBakeEvent;
|
||||||
|
import net.minecraftforge.client.event.ModelRegistryEvent;
|
||||||
|
import net.minecraftforge.client.model.ModelLoader;
|
||||||
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
|
|
||||||
|
public class ModelSwapper {
|
||||||
|
|
||||||
|
protected CustomBlockModels customBlockModels = new CustomBlockModels();
|
||||||
|
protected CustomItemModels customItemModels = new CustomItemModels();
|
||||||
|
protected CustomRenderedItems customRenderedItems = new CustomRenderedItems();
|
||||||
|
|
||||||
|
public CustomBlockModels getCustomBlockModels() {
|
||||||
|
return customBlockModels;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CustomItemModels getCustomItemModels() {
|
||||||
|
return customItemModels;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CustomRenderedItems getCustomRenderedItems() {
|
||||||
|
return customRenderedItems;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onModelRegistry(ModelRegistryEvent event) {
|
||||||
|
customRenderedItems.forEach((item, modelFunc) -> modelFunc.apply(null)
|
||||||
|
.getModelLocations()
|
||||||
|
.forEach(ModelLoader::addSpecialModel));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onModelBake(ModelBakeEvent event) {
|
||||||
|
Map<ResourceLocation, IBakedModel> modelRegistry = event.getModelRegistry();
|
||||||
|
|
||||||
|
customBlockModels.forEach((block, modelFunc) -> swapModels(modelRegistry, getAllBlockStateModelLocations(block), modelFunc));
|
||||||
|
customItemModels.forEach((item, modelFunc) -> swapModels(modelRegistry, getItemModelLocation(item), modelFunc));
|
||||||
|
customRenderedItems.forEach((item, modelFunc) -> {
|
||||||
|
swapModels(modelRegistry, getItemModelLocation(item), m -> {
|
||||||
|
CustomRenderedItemModel swapped = modelFunc.apply(m);
|
||||||
|
swapped.loadPartials(event);
|
||||||
|
return swapped;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registerListeners(IEventBus modEventBus) {
|
||||||
|
modEventBus.addListener(this::onModelRegistry);
|
||||||
|
modEventBus.addListener(this::onModelBake);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T extends IBakedModel> void swapModels(Map<ResourceLocation, IBakedModel> modelRegistry,
|
||||||
|
List<ModelResourceLocation> locations, Function<IBakedModel, T> factory) {
|
||||||
|
locations.forEach(location -> {
|
||||||
|
swapModels(modelRegistry, location, factory);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T extends IBakedModel> void swapModels(Map<ResourceLocation, IBakedModel> modelRegistry,
|
||||||
|
ModelResourceLocation location, Function<IBakedModel, T> factory) {
|
||||||
|
modelRegistry.put(location, factory.apply(modelRegistry.get(location)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<ModelResourceLocation> getAllBlockStateModelLocations(Block block) {
|
||||||
|
List<ModelResourceLocation> models = new ArrayList<>();
|
||||||
|
ResourceLocation blockRl = block.getRegistryName();
|
||||||
|
block.getStateDefinition()
|
||||||
|
.getPossibleStates()
|
||||||
|
.forEach(state -> {
|
||||||
|
models.add(BlockModelShapes.stateToModelLocation(blockRl, state));
|
||||||
|
});
|
||||||
|
return models;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ModelResourceLocation getItemModelLocation(Item item) {
|
||||||
|
return new ModelResourceLocation(item.getRegistryName(), "inventory");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -13,7 +13,7 @@ import org.lwjgl.system.MemoryStack;
|
||||||
import com.jozufozu.flywheel.util.VirtualEmptyModelData;
|
import com.jozufozu.flywheel.util.VirtualEmptyModelData;
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
import com.simibubi.create.foundation.utility.placement.PlacementHelpers;
|
import com.simibubi.create.foundation.utility.placement.PlacementHelpers;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
|
|
|
@ -4,7 +4,7 @@ import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
|
|
|
@ -2,8 +2,8 @@ package com.simibubi.create.foundation.utility.outliner;
|
||||||
|
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||||
import com.simibubi.create.foundation.renderState.RenderTypes;
|
import com.simibubi.create.foundation.render.RenderTypes;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
|
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
|
|
@ -9,8 +9,8 @@ import java.util.Set;
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||||
import com.simibubi.create.AllSpecialTextures;
|
import com.simibubi.create.AllSpecialTextures;
|
||||||
import com.simibubi.create.foundation.renderState.RenderTypes;
|
import com.simibubi.create.foundation.render.RenderTypes;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
import com.simibubi.create.foundation.utility.VecHelper;
|
import com.simibubi.create.foundation.utility.VecHelper;
|
||||||
|
|
||||||
import net.minecraft.client.renderer.RenderType;
|
import net.minecraft.client.renderer.RenderType;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.simibubi.create.foundation.utility.outliner;
|
package com.simibubi.create.foundation.utility.outliner;
|
||||||
|
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
|
|
||||||
import net.minecraft.util.math.AxisAlignedBB;
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package com.simibubi.create.foundation.utility.outliner;
|
package com.simibubi.create.foundation.utility.outliner;
|
||||||
|
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
|
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
import net.minecraft.util.math.vector.Vector3d;
|
import net.minecraft.util.math.vector.Vector3d;
|
||||||
|
|
|
@ -9,8 +9,8 @@ import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack.Entry;
|
import com.mojang.blaze3d.matrix.MatrixStack.Entry;
|
||||||
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||||
import com.simibubi.create.AllSpecialTextures;
|
import com.simibubi.create.AllSpecialTextures;
|
||||||
import com.simibubi.create.foundation.renderState.RenderTypes;
|
import com.simibubi.create.foundation.render.RenderTypes;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||||
import com.simibubi.create.foundation.utility.Color;
|
import com.simibubi.create.foundation.utility.Color;
|
||||||
import com.simibubi.create.foundation.utility.VecHelper;
|
import com.simibubi.create.foundation.utility.VecHelper;
|
||||||
|
|
|
@ -8,7 +8,7 @@ import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
import com.simibubi.create.foundation.render.SuperRenderTypeBuffer;
|
||||||
import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox;
|
import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox;
|
||||||
import com.simibubi.create.foundation.utility.outliner.LineOutline.EndChasingLineOutline;
|
import com.simibubi.create.foundation.utility.outliner.LineOutline.EndChasingLineOutline;
|
||||||
import com.simibubi.create.foundation.utility.outliner.Outline.OutlineParams;
|
import com.simibubi.create.foundation.utility.outliner.Outline.OutlineParams;
|
||||||
|
|
Loading…
Reference in a new issue