Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
ed06ee8
feat: roundel builder
Loqor Apr 11, 2025
d61cd54
Merge branch 'main' into feat/roundels
Loqor Apr 11, 2025
c7124c9
feat: more work done on the roundels, they dont work yet at all but i…
Loqor Apr 12, 2025
1e7cf5c
fix: renders roundelpatterns properly now I think
Loqor Apr 12, 2025
3976f06
feat: roundel textures! nothing works because the game black screens …
Loqor Apr 12, 2025
65bddfe
fmt
Loqor Apr 12, 2025
09181c7
feat: it works!! kinda
Loqor Apr 12, 2025
56beba3
feat: RAHH THEY WORK NOW
Loqor Apr 13, 2025
c04ad7c
fix: half holes
Loqor Apr 13, 2025
a0afb2a
feat: dynamic textures (cant test bcs black screen)
Loqor Apr 13, 2025
bea5ccd
feat: rotational roundel block
Loqor Apr 13, 2025
55e0aa3
feat: more patterns!!!
Loqor Apr 13, 2025
e332132
fix: hopefully dynamic NOWWW
Loqor Apr 13, 2025
2ecbe11
fix: dynamic tex
Loqor Apr 13, 2025
f355275
no more println
Loqor Apr 13, 2025
7ec3018
feat: you can now set the roundel block to be any block!
Loqor Apr 13, 2025
713770c
feat: you can now set the roundel block to be any block for real now!
Loqor Apr 14, 2025
ec146a8
fix: roundel culling
Loqor Apr 14, 2025
738d5b9
fix: stuff
Saturnorsomthing Apr 14, 2025
0acc9cc
fix: roundel block translation
Addi3 Apr 14, 2025
ae88440
feat: more roundel stuff (turning them into blocks)
Loqor Apr 14, 2025
f055a13
Merge branch 'main' into feat/roundels
Loqor Apr 15, 2025
bb34c74
Fixed Block Model texture not working
RedaKarimi Apr 16, 2025
215f6bc
Merge remote-tracking branch 'origin/feat/roundels' into feat/roundels
Loqor Apr 16, 2025
5f6debf
feat: NO MORE LAG WITH ROUNDELS!!!
Loqor Apr 16, 2025
8734fa3
fix: they save their data properly now
Loqor Apr 16, 2025
917296c
remove RoundelBlockEntityRenderer.java
Loqor Apr 16, 2025
fb3e521
Merge branch 'main' into feat/roundels
Loqor Apr 16, 2025
6ecb587
fix: going brrrr and wotn buoild
Loqor Apr 16, 2025
289f5a5
feat: roundelType record as opposed to Pair<RoundelPattern, DyeColor>…
Loqor Apr 16, 2025
9dd0b23
fix: forgor to remove bool
Loqor Apr 16, 2025
e91e77e
fix: emissive boolean stuff
Loqor Apr 16, 2025
c45aab4
fix: roundel item rendering
Loqor Apr 17, 2025
b1b74ea
Merge branch 'main' into feat/roundels
Loqor Apr 17, 2025
d1b02bf
item is borked
Loqor Apr 18, 2025
2a3cd7f
Merge branch 'main' into feat/roundels
Loqor Apr 20, 2025
db2cc48
Merge branch 'main' into feat/roundels
Loqor Apr 20, 2025
e24f52a
feat: lord have mercy upon us, so many roundels, bassicly all of them…
Saturnorsomthing Apr 21, 2025
1541c1b
feat: secondary interior roundel patterns (like 2-4 textures per roun…
Addi3 Apr 21, 2025
0258ee7
feat: chorus roundel texture
Addi3 Apr 21, 2025
3fd085b
beginning on color wheel
Loqor Apr 21, 2025
78ec2c3
feat: COLOR PICKER FOR THE ROUNDELS!
Loqor Apr 23, 2025
043d205
Merge branch 'main' into feat/roundels
Loqor Apr 23, 2025
784ed6c
feat: more dyability + cursor + hex input
Loqor Apr 23, 2025
942621c
Merge branch 'main' into feat/roundels
Loqor Apr 23, 2025
3c21eea
fixing item rendering
Loqor Apr 23, 2025
4504248
Merge branch 'main' into feat/roundels
Loqor Apr 23, 2025
2627a0a
feat: roundel fabricator texture update
Loqor Apr 23, 2025
d2d462f
Merge branch 'main' into feat/roundels
Loqor Apr 23, 2025
6f7b594
Merge branch 'main' into feat/roundels
Loqor Apr 23, 2025
4f2e5fe
fix: all of theo's nitpicks
Loqor Apr 23, 2025
453d4fd
Merge branch 'main' into feat/roundels
Loqor Apr 24, 2025
5742578
fix: roundel blocks render layer's weren't having a great time
Loqor Apr 24, 2025
164e654
Merge branch 'main' into feat/roundels
Loqor Apr 28, 2025
8adbbef
Merge branch 'main' into feat/roundels
Loqor May 1, 2025
2e93d3d
replace getInteriorWorld() with worldRef().get()
Loqor May 1, 2025
9d4640a
Merge branch 'main' into feat/roundels
Loqor May 2, 2025
58828d7
Merge branch 'main' into feat/roundels
Loqor Jul 26, 2025
ec221a7
Merge branch 'main' into feat/roundels
Loqor Aug 6, 2025
26ff635
Merge branch 'main' into feat/roundels
Loqor Aug 13, 2025
0d28ef4
Merge branch 'main' into feat/roundels
Loqor Aug 15, 2025
b5b93e6
pull from main fix other bugs
Loqor Aug 15, 2025
270d9a0
fmt
Loqor Aug 15, 2025
feca68f
fmt
Loqor Aug 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion src/main/java/dev/amble/ait/AITMod.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.resource.featuretoggle.FeatureSet;
import net.minecraft.screen.ScreenHandlerType;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.Identifier;
Expand All @@ -64,6 +66,8 @@
import dev.amble.ait.core.likes.ItemOpinionRegistry;
import dev.amble.ait.core.lock.LockedDimensionRegistry;
import dev.amble.ait.core.loot.SetBlueprintLootFunction;
import dev.amble.ait.core.roundels.RoundelPatterns;
import dev.amble.ait.core.screens.RoundelFabricatorScreenHandler;
import dev.amble.ait.core.sounds.flight.FlightSoundRegistry;
import dev.amble.ait.core.sounds.travel.TravelSoundRegistry;
import dev.amble.ait.core.tardis.animation.v2.blockbench.BlockbenchParser;
Expand All @@ -90,7 +94,6 @@
import dev.amble.ait.registry.impl.exterior.ExteriorVariantRegistry;

public class AITMod implements ModInitializer {

public static final String MOD_ID = "ait";
public static final Logger LOGGER = LoggerFactory.getLogger("ait");
public static final Random RANDOM = new Random();
Expand All @@ -102,6 +105,11 @@ public class AITMod implements ModInitializer {
public static final GameRules.Key<GameRules.BooleanRule> TARDIS_FIRE_GRIEFING = GameRuleRegistry.register("tardisFireGriefing",
GameRules.Category.MISC, GameRuleFactory.createBooleanRule(false));

// Screens
public static final ScreenHandlerType<RoundelFabricatorScreenHandler> ROUNDEL_FABRICATOR_HANDLER = Registry.register(Registries.SCREEN_HANDLER,
AITMod.id("roundel_fabricator"),
new ScreenHandlerType<>(RoundelFabricatorScreenHandler::new, FeatureSet.empty()));


public static final RegistryKey<PlacedFeature> CUSTOM_GEODE_PLACED_KEY = RegistryKey.of(RegistryKeys.PLACED_FEATURE,
new Identifier(MOD_ID, "zeiton_geode"));
Expand Down Expand Up @@ -164,6 +172,8 @@ public void onInitialize() {
SubSystemRegistry.getInstance(),
ItemOpinionRegistry.getInstance(),
DrinkRegistry.getInstance(),
RoundelPatterns.getInstance(),
DrinkRegistry.getInstance(),
TardisAnimationRegistry.getInstance(),
DoorRegistry.getInstance()
);
Expand Down
93 changes: 55 additions & 38 deletions src/main/java/dev/amble/ait/client/AITModClient.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,46 @@
package dev.amble.ait.client;

import static dev.amble.ait.AITMod.*;
import static dev.amble.ait.core.AITItems.isUnlockedOnThisDay;
import static dev.amble.ait.core.item.PersonalityMatrixItem.colorToInt;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.UUID;

import dev.amble.lib.register.AmbleRegistries;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
import net.fabricmc.fabric.api.client.model.loading.v1.ModelLoadingPlugin;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.*;
import net.fabricmc.fabric.api.event.client.player.ClientPreAttackCallback;
import org.jetbrains.annotations.Nullable;

import net.minecraft.block.DoorBlock;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.ingame.HandledScreens;
import net.minecraft.client.item.ModelPredicateProviderRegistry;
import net.minecraft.client.particle.EndRodParticle;
import net.minecraft.client.render.LightmapTextureManager;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.block.entity.BlockEntityRendererFactories;
import net.minecraft.client.render.entity.model.SinglePartEntityModel;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RotationAxis;
import net.minecraft.util.math.RotationPropertyHelper;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.LightType;

import dev.amble.ait.AITMod;
import dev.amble.ait.client.boti.*;
import dev.amble.ait.client.commands.ConfigCommand;
Expand Down Expand Up @@ -50,6 +91,8 @@
import dev.amble.ait.core.entities.BOTIPaintingEntity;
import dev.amble.ait.core.entities.RiftEntity;
import dev.amble.ait.core.item.*;
import dev.amble.ait.core.roundels.RoundelPatterns;
import dev.amble.ait.core.screens.RoundelFabricatorScreen;
import dev.amble.ait.core.tardis.Tardis;
import dev.amble.ait.core.world.TardisServerWorld;
import dev.amble.ait.data.schema.console.ConsoleTypeSchema;
Expand All @@ -61,43 +104,6 @@
import dev.amble.ait.registry.impl.console.variant.ClientConsoleVariantRegistry;
import dev.amble.ait.registry.impl.door.ClientDoorRegistry;
import dev.amble.ait.registry.impl.exterior.ClientExteriorVariantRegistry;
import dev.amble.lib.register.AmbleRegistries;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.*;
import net.fabricmc.fabric.api.event.client.player.ClientPreAttackCallback;
import net.minecraft.block.DoorBlock;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.item.ModelPredicateProviderRegistry;
import net.minecraft.client.particle.EndRodParticle;
import net.minecraft.client.render.LightmapTextureManager;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.block.entity.BlockEntityRendererFactories;
import net.minecraft.client.render.entity.model.SinglePartEntityModel;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RotationAxis;
import net.minecraft.util.math.RotationPropertyHelper;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.LightType;
import org.jetbrains.annotations.Nullable;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.UUID;

import static dev.amble.ait.AITMod.*;
import static dev.amble.ait.core.AITItems.isUnlockedOnThisDay;
import static dev.amble.ait.core.item.PersonalityMatrixItem.colorToInt;

@Environment(value = EnvType.CLIENT)
public class AITModClient implements ClientModInitializer {
Expand All @@ -113,15 +119,20 @@ public void onInitializeClient() {
AmbleRegistries.getInstance().registerAll(
SonicRegistry.getInstance(),
DrinkRegistry.getInstance(),
RoundelPatterns.getInstance(),
ClientExteriorVariantRegistry.getInstance(),
ClientConsoleVariantRegistry.getInstance(),
ClientDoorRegistry.getInstance()
);

ModelLoadingPlugin.register(new AITModelPlugin());

//ClientDoorRegistry.init();
ClientTardisManager.init();

ModuleRegistry.instance().onClientInit();

registerScreens();
setupBlockRendering();
blockEntityRendererRegister();
entityRenderRegister();
Expand Down Expand Up @@ -161,7 +172,6 @@ public void onInitializeClient() {
WorldRenderEvents.AFTER_ENTITIES.register(this::riftBOTI);
}

// @TODO idk why but this gets rid of other important stuff, not sure
DimensionRenderingRegistry.registerDimensionEffects(AITDimensions.MARS.getValue(), new MarsSkyProperties());

WorldRenderEvents.BEFORE_ENTITIES.register(context -> {
Expand Down Expand Up @@ -378,6 +388,8 @@ public static void blockEntityRendererRegister() {
BlockEntityRendererFactories.register(AITBlockEntityTypes.ENGINE_BLOCK_ENTITY_TYPE, EngineRenderer::new);
BlockEntityRendererFactories.register(AITBlockEntityTypes.FABRICATOR_BLOCK_ENTITY_TYPE,
FabricatorRenderer::new);
BlockEntityRendererFactories.register(AITBlockEntityTypes.ROUNDEL_FABRICATOR_BLOCK_ENTITY_TYPE,
RoundelFabricatorRenderer::new);
BlockEntityRendererFactories.register(AITBlockEntityTypes.WAYPOINT_BANK_BLOCK_ENTITY_TYPE,
WaypointBankBlockEntityRenderer::new);
BlockEntityRendererFactories.register(AITBlockEntityTypes.FLAG_BLOCK_ENTITY_TYPE, FlagBlockEntityRenderer::new);
Expand Down Expand Up @@ -419,6 +431,7 @@ public static void setupBlockRendering() {
map.putBlock(AITBlocks.FABRICATOR, RenderLayer.getTranslucent());
map.putBlock(AITBlocks.ENVIRONMENT_PROJECTOR, RenderLayer.getTranslucent());
map.putBlock(AITBlocks.WAYPOINT_BANK, RenderLayer.getCutout());
map.putBlock(AITBlocks.ROUNDEL, RenderLayer.getCutout());
if (isUnlockedOnThisDay(Calendar.DECEMBER, 30)) {
map.putBlock(AITBlocks.SNOW_GLOBE, RenderLayer.getCutout());
}
Expand All @@ -428,6 +441,10 @@ public static void setupBlockRendering() {
map.putBlock(AITBlocks.MATRIX_ENERGIZER, RenderLayer.getCutout());
}

public void registerScreens() {
HandledScreens.register(ROUNDEL_FABRICATOR_HANDLER, RoundelFabricatorScreen::new);
}

public void registerItemColors() {
ColorProviderRegistry.ITEM.register((stack, tintIndex) -> {
if (tintIndex != 0)
Expand Down
33 changes: 33 additions & 0 deletions src/main/java/dev/amble/ait/client/AITModelPlugin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package dev.amble.ait.client;

import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.model.loading.v1.ModelLoadingPlugin;
import net.fabricmc.fabric.api.client.model.loading.v1.ModelModifier;

import net.minecraft.client.render.model.UnbakedModel;
import net.minecraft.util.Identifier;

import dev.amble.ait.AITMod;
import dev.amble.ait.client.models.RoundelModel;

@Environment(EnvType.CLIENT)
public class AITModelPlugin implements ModelLoadingPlugin, ModelModifier.OnLoad {
public static final Identifier ROUNDEL_MODEL = AITMod.id("roundel");

@Override
public void onInitializeModelLoader(ModelLoadingPlugin.Context pluginContext) {
pluginContext.modifyModelOnLoad().register(this);
}

@Override
public UnbakedModel modifyModelOnLoad(UnbakedModel model, ModelModifier.OnLoad.Context context) {
Identifier id = context.id();
// This is EXCEPTIONALLY stupid. But so is Mojang. So, in conclusion, fuck you. - Loqor
if (id != null && (
id.toString().contains("ait:roundel#") && !id.toString().contains("ait:roundel_fabricator"))) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i mean
if it contains "ait:roundel#" it cant contain "ait:roundel_fabricator".

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i assume the # checks for everything after that so

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

????

return new RoundelModel();
}
return model;
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package dev.amble.ait.client.boti;

import com.mojang.blaze3d.systems.RenderSystem;
import dev.amble.ait.client.models.AnimatedModel;
import org.joml.Vector3f;
import org.lwjgl.opengl.GL11;

Expand All @@ -17,6 +16,7 @@
import net.minecraft.util.math.Vec3d;

import dev.amble.ait.client.AITModClient;
import dev.amble.ait.client.models.AnimatedModel;
import dev.amble.ait.client.renderers.AITRenderLayers;
import dev.amble.ait.client.renderers.VortexUtil;
import dev.amble.ait.client.tardis.ClientTardis;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@


import com.mojang.blaze3d.systems.RenderSystem;
import dev.amble.ait.client.models.exteriors.ExteriorModel;
import org.joml.Vector3f;
import org.lwjgl.opengl.GL11;

Expand All @@ -11,7 +10,6 @@
import net.minecraft.client.render.OverlayTexture;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.model.SinglePartEntityModel;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.passive.SheepEntity;
import net.minecraft.util.DyeColor;
Expand All @@ -21,7 +19,7 @@

import dev.amble.ait.api.tardis.TardisComponent;
import dev.amble.ait.client.AITModClient;
import dev.amble.ait.client.models.exteriors.SimpleExteriorModel;
import dev.amble.ait.client.models.exteriors.ExteriorModel;
import dev.amble.ait.client.renderers.AITRenderLayers;
import dev.amble.ait.client.tardis.ClientTardis;
import dev.amble.ait.core.blockentities.ExteriorBlockEntity;
Expand Down
23 changes: 12 additions & 11 deletions src/main/java/dev/amble/ait/client/models/AnimatedModel.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
package dev.amble.ait.client.models;

import dev.amble.ait.client.tardis.ClientTardis;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.client.model.ModelPart;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.util.math.MatrixStack;

import dev.amble.ait.client.tardis.ClientTardis;

public interface AnimatedModel<T extends BlockEntity> {
void renderWithAnimations(ClientTardis tardis, T linkableBlockEntity, ModelPart root, MatrixStack matrices,
VertexConsumer vertices, int light, int overlay, float red, float green, float blue, float pAlpha, float tickDelta);
void renderWithAnimations(ClientTardis tardis, T linkableBlockEntity, ModelPart root, MatrixStack matrices,
VertexConsumer vertices, int light, int overlay, float red, float green, float blue, float pAlpha, float tickDelta);

default void render(MatrixStack stack, VertexConsumer buffer, int maxLightCoordinate, int defaultUv, float base, float base1, float base2, float v) {
ModelPart root = getPart();
root.render(stack, buffer, maxLightCoordinate, defaultUv, base, base1, base2, v);
}
default void render(MatrixStack stack, VertexConsumer buffer, int maxLightCoordinate, int defaultUv, float base, float base1, float base2, float v) {
ModelPart root = getPart();
root.render(stack, buffer, maxLightCoordinate, defaultUv, base, base1, base2, v);
}

/**
* @return the root model part
*/
ModelPart getPart();
/**
* @return the root model part
*/
ModelPart getPart();
}
Loading
Loading