CreateMod/src/main/java/com/simibubi/create/foundation/ponder/PonderTag.java

188 lines
6.3 KiB
Java
Raw Normal View History

package com.simibubi.create.foundation.ponder;
2021-11-03 03:04:52 +01:00
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllItems;
import com.simibubi.create.Create;
import com.simibubi.create.foundation.gui.element.GuiGameElement;
import com.simibubi.create.foundation.gui.element.ScreenElement;
import net.minecraft.client.gui.GuiComponent;
2021-11-02 06:18:30 +01:00
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.ItemLike;
2021-11-02 06:18:30 +01:00
import net.minecraft.world.level.block.Blocks;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
public class PonderTag implements ScreenElement {
public static final PonderTag
2023-05-13 12:37:52 +02:00
KINETIC_RELAYS = create("kinetic_relays").item(AllBlocks.COGWHEEL.get())
.defaultLang("Kinetic Blocks", "Components which help relaying Rotational Force elsewhere")
.addToIndex(),
2023-05-13 12:37:52 +02:00
KINETIC_SOURCES = create("kinetic_sources").item(AllBlocks.WATER_WHEEL.get())
.defaultLang("Kinetic Sources", "Components which generate Rotational Force")
.addToIndex(),
2023-05-13 12:37:52 +02:00
KINETIC_APPLIANCES = create("kinetic_appliances").item(AllBlocks.MECHANICAL_PRESS.get())
.defaultLang("Kinetic Appliances", "Components which make use of Rotational Force")
.addToIndex(),
2023-05-13 12:37:52 +02:00
FLUIDS = create("fluids").item(AllBlocks.FLUID_PIPE.get())
.defaultLang("Fluid Manipulators", "Components which help relaying and making use of Fluids")
.addToIndex(),
2023-05-13 12:37:52 +02:00
LOGISTICS = create("logistics").item(Blocks.CHEST)
.defaultLang("Item Transportation", "Components which help moving items around")
.addToIndex(),
2023-05-13 12:37:52 +02:00
REDSTONE = create("redstone").item(Items.REDSTONE)
.defaultLang("Logic Components", "Components which help with redstone engineering")
.addToIndex(),
2023-05-13 12:37:52 +02:00
DECORATION = create("decoration").item(Items.ROSE_BUSH)
.defaultLang("Aesthetics", "Components used mostly for decorative purposes"),
2023-05-13 12:37:52 +02:00
CREATIVE = create("creative").item(AllBlocks.CREATIVE_CRATE.get())
.defaultLang("Creative Mode", "Components not usually available for Survival Mode")
.addToIndex(),
2023-05-13 12:37:52 +02:00
MOVEMENT_ANCHOR = create("movement_anchor").item(AllBlocks.MECHANICAL_PISTON.get())
.defaultLang("Movement Anchors",
"Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways")
.addToIndex(),
2023-05-13 12:37:52 +02:00
CONTRAPTION_ACTOR = create("contraption_actor").item(AllBlocks.MECHANICAL_HARVESTER.get())
.defaultLang("Contraption Actors",
"Components which expose special behaviour when attached to a moving contraption")
.addToIndex(),
2023-05-13 12:37:52 +02:00
CONTRAPTION_ASSEMBLY = create("contraption_assembly").item(AllItems.SUPER_GLUE.get())
.defaultLang("Block Attachment Utility",
"Tools and Components used to assemble structures moved as an animated Contraption")
.addToIndex(),
2023-05-13 12:37:52 +02:00
SAILS = create("windmill_sails").item(AllBlocks.WINDMILL_BEARING.get(), true, true)
.defaultLang("Sails for Windmill Bearings",
"Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so."),
2023-05-13 12:37:52 +02:00
ARM_TARGETS = create("arm_targets").item(AllBlocks.MECHANICAL_ARM.get(), true, true)
.defaultLang("Targets for Mechanical Arms",
"Components which can be selected as inputs or outputs to the Mechanical Arm"),
TRAIN_RELATED = create("train_related").item(AllBlocks.TRACK.get())
.defaultLang("Railway Equipment", "Components used in the construction or management of Train Contraptions")
.addToIndex(),
RECENTLY_UPDATED = create("recently_updated").item(AllBlocks.CLIPBOARD.get())
.defaultLang("Recent Changes",
"Components that have been added or changed significantly in the latest versions of Create")
.addToIndex(),
2023-05-13 12:37:52 +02:00
DISPLAY_SOURCES = create("display_sources").item(AllBlocks.DISPLAY_LINK.get(), true, true)
.defaultLang("Sources for Display Links",
"Components or Blocks which offer some data that can be read with a Display Link"),
2023-05-13 12:37:52 +02:00
DISPLAY_TARGETS = create("display_targets").item(AllBlocks.DISPLAY_LINK.get(), true, true)
.defaultLang("Targets for Display Links",
"Components or Blocks which can process and display the data received from a Display Link");
public static class Highlight {
public static final PonderTag ALL = create("_all");
}
private final ResourceLocation id;
private ResourceLocation icon;
private ItemStack itemIcon = ItemStack.EMPTY;
private ItemStack mainItem = ItemStack.EMPTY;
public PonderTag(ResourceLocation id) {
this.id = id;
}
public ResourceLocation getId() {
return id;
}
public ItemStack getMainItem() {
return mainItem;
}
public String getTitle() {
return PonderLocalization.getTag(id);
}
public String getDescription() {
return PonderLocalization.getTagDescription(id);
}
// Builder
public PonderTag defaultLang(String title, String description) {
PonderLocalization.registerTag(id, title, description);
return this;
}
public PonderTag addToIndex() {
PonderRegistry.TAGS.listTag(this);
return this;
}
public PonderTag icon(ResourceLocation location) {
this.icon = new ResourceLocation(location.getNamespace(), "textures/ponder/tag/" + location.getPath() + ".png");
return this;
}
public PonderTag icon(String location) {
this.icon = new ResourceLocation(id.getNamespace(), "textures/ponder/tag/" + location + ".png");
return this;
}
public PonderTag idAsIcon() {
return icon(id);
}
public PonderTag item(ItemLike item, boolean useAsIcon, boolean useAsMainItem) {
if (useAsIcon)
this.itemIcon = new ItemStack(item);
if (useAsMainItem)
this.mainItem = new ItemStack(item);
return this;
}
public PonderTag item(ItemLike item) {
2023-05-13 12:37:52 +02:00
return this.item(item, true, false);
}
@Override
@OnlyIn(Dist.CLIENT)
public void render(PoseStack ms, int x, int y) {
2021-07-15 11:32:03 +02:00
ms.pushPose();
ms.translate(x, y, 0);
if (icon != null) {
2021-11-03 03:04:52 +01:00
RenderSystem.setShaderTexture(0, icon);
ms.scale(0.25f, 0.25f, 1);
GuiComponent.blit(ms, 0, 0, 0, 0, 0, 64, 64, 64, 64);
} else if (!itemIcon.isEmpty()) {
ms.translate(-2, -2, 0);
ms.scale(1.25f, 1.25f, 1.25f);
GuiGameElement.of(itemIcon)
Merge branch 'mc1.15/dev' into mc1.16/dev # Conflicts: # src/generated/resources/.cache/cache # src/generated/resources/assets/create/blockstates/andesite_funnel.json # src/generated/resources/assets/create/blockstates/brass_funnel.json # src/generated/resources/assets/create/lang/unfinished/de_de.json # src/generated/resources/assets/create/lang/unfinished/es_es.json # src/generated/resources/assets/create/lang/unfinished/fr_fr.json # src/generated/resources/assets/create/lang/unfinished/it_it.json # src/generated/resources/assets/create/lang/unfinished/ja_jp.json # src/generated/resources/assets/create/lang/unfinished/ko_kr.json # src/generated/resources/assets/create/lang/unfinished/nl_nl.json # src/generated/resources/assets/create/lang/unfinished/pt_br.json # src/main/java/com/simibubi/create/AllBlocks.java # src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java # src/main/java/com/simibubi/create/content/contraptions/components/actors/ContraptionActorData.java # src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java # src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterTileEntity.java # src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java # src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java # src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AssemblyException.java # src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java # src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java # src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java # src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java # src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/LinearChassisBlock.java # src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageBlock.java # src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java # src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java # src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutTileEntity.java # src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java # src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java # src/main/java/com/simibubi/create/content/contraptions/particle/RotationIndicatorParticle.java # src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java # src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java # src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelFilterSlotPositioning.java # src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelMovementBehaviour.java # src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelTileEntity.java # src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmInteractionPoint.java # src/main/java/com/simibubi/create/content/logistics/item/filter/AbstractFilterScreen.java # src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterScreen.java # src/main/java/com/simibubi/create/content/schematics/SchematicWorld.java # src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java # src/main/java/com/simibubi/create/content/schematics/block/SchematicannonRenderer.java # src/main/java/com/simibubi/create/events/ClientEvents.java # src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java # src/main/java/com/simibubi/create/foundation/collision/CollisionDebugger.java # src/main/java/com/simibubi/create/foundation/collision/OBBCollider.java # src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java # src/main/java/com/simibubi/create/foundation/gui/AbstractSimiContainerScreen.java # src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java # src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java # src/main/java/com/simibubi/create/foundation/gui/AllIcons.java # src/main/java/com/simibubi/create/foundation/gui/widgets/SelectionScrollInput.java # src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java # src/main/java/com/simibubi/create/foundation/mixin/LightUpdateMixin.java # src/main/java/com/simibubi/create/foundation/mixin/RenderHooksMixin.java # src/main/java/com/simibubi/create/foundation/render/KineticRenderer.java # src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java # src/main/java/com/simibubi/create/foundation/render/backend/Backend.java # src/main/java/com/simibubi/create/foundation/render/backend/instancing/InstancedTileRenderer.java # src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java # src/main/java/com/simibubi/create/foundation/utility/ColorHelper.java # src/main/java/com/simibubi/create/foundation/utility/Lang.java # src/main/java/com/simibubi/create/foundation/utility/MatrixStacker.java # src/main/java/com/simibubi/create/foundation/utility/TreeCutter.java # src/main/java/com/simibubi/create/foundation/utility/VecHelper.java # src/main/java/com/simibubi/create/foundation/utility/placement/IPlacementHelper.java # src/main/java/com/simibubi/create/foundation/utility/placement/util/PoleHelper.java
2021-03-20 12:58:02 +01:00
.render(ms);
}
2021-07-15 11:32:03 +02:00
ms.popPose();
}
private static PonderTag create(String id) {
return new PonderTag(Create.asResource(id));
}
// Load class
public static void register() {}
}