Skip to content

Commit

Permalink
Port to MC 1.20.2.
Browse files Browse the repository at this point in the history
  • Loading branch information
fnuecke committed Nov 16, 2023
1 parent 96ea91b commit 60a99b5
Show file tree
Hide file tree
Showing 12 changed files with 88 additions and 85 deletions.
10 changes: 1 addition & 9 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -46,26 +46,18 @@ subprojects {
forRepository { maven("https://maven.parchmentmc.org") }
filter { includeGroupByRegex("org\\.parchmentmc.*") }
}
exclusiveContent {
forRepository { maven("https://cursemaven.com") }
filter { includeGroup("curse.maven") }
}
exclusiveContent {
forRepository { maven("https://api.modrinth.com/maven") }
filter { includeGroup("maven.modrinth") }
}
exclusiveContent {
forRepository { flatDir { dir("${rootProject.projectDir}/libs") } }
filter { includeGroup("local") }
}
}

dependencies {
"minecraft"(rootProject.libs.minecraft)
val loom = project.extensions.getByName<LoomGradleExtensionAPI>("loom")
"mappings"(loom.layered {
officialMojangMappings()
parchment("org.parchmentmc.data:parchment-$minecraftVersion:${rootProject.libs.versions.parchment.get()}@zip")
parchment("org.parchmentmc.data:parchment-${rootProject.libs.versions.parchment.minecraft.get()}:${rootProject.libs.versions.parchment.mappings.get()}@zip")
})
"compileOnly"("com.google.code.findbugs:jsr305:3.0.2")
}
Expand Down
2 changes: 1 addition & 1 deletion common/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ loom {
dependencies {
modImplementation(libs.fabric.loader)
modApi(libs.architectury.api)
modApi(libs.manual.api)
modApi(libs.fabric.manual)
}

tasks {
Expand Down
8 changes: 4 additions & 4 deletions common/src/main/java/li/cil/tis3d/api/util/RenderContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -174,10 +174,10 @@ default void drawQuad(final VertexConsumer builder, final float x, final float y
default void drawAtlasQuad(final VertexConsumer builder, final TextureAtlasSprite sprite,
final float x, final float y, final float width, final float height,
final float u0, final float v0, final float u1, final float v1, final int argb) {
final float atlasU0 = sprite.getU(u0 * 16);
final float atlasV0 = sprite.getV(v0 * 16);
final float atlasU1 = sprite.getU(u1 * 16);
final float atlasV1 = sprite.getV(v1 * 16);
final float atlasU0 = sprite.getU(u0);
final float atlasV0 = sprite.getV(v0);
final float atlasU1 = sprite.getU(u1);
final float atlasV1 = sprite.getV(v1);
drawQuad(builder, x, y, width, height, atlasU0, atlasV0, atlasU1, atlasV1, argb);
}

Expand Down
25 changes: 18 additions & 7 deletions common/src/main/java/li/cil/tis3d/client/gui/CodeBookScreen.java
Original file line number Diff line number Diff line change
Expand Up @@ -113,26 +113,29 @@ public void removed() {
Network.sendToServer(new CodeBookDataMessage(hand, tag));
}

@Override
public void renderBackground(final GuiGraphics graphics, final int mouseX, final int mouseY, final float partialTicks) {
super.renderBackground(graphics, mouseX, mouseY, partialTicks);

graphics.blit(Textures.LOCATION_GUI_BOOK_CODE_BACKGROUND, guiX, guiY, 0, 0, GUI_WIDTH, GUI_HEIGHT);
}

@Override
public void render(final GuiGraphics graphics, final int mouseX, final int mouseY, final float partialTicks) {
if (!player.isAlive() || !Items.is(player.getItemInHand(hand), Items.BOOK_CODE)) {
Minecraft.getInstance().setScreen(null);
return;
}

renderBackground(graphics);

// Background.
graphics.blit(Textures.LOCATION_GUI_BOOK_CODE_BACKGROUND, guiX, guiY, 0, 0, GUI_WIDTH, GUI_HEIGHT);
super.render(graphics, mouseX, mouseY, partialTicks);

// Check page change button availability.
buttonPreviousPage.visible = data.getSelectedPage() > 0 && data.getPageCount() > 0;
buttonNextPage.visible = (data.getSelectedPage() < data.getPageCount() - 1) ||
(data.getSelectedPage() == data.getPageCount() - 1 && isCurrentProgramNonEmpty());
buttonDeletePage.visible = data.getPageCount() > 1 || isCurrentProgramNonEmpty();

super.render(graphics, mouseX, mouseY, partialTicks);

// Draw current program.
drawProgram(graphics, mouseX, mouseY);

Expand Down Expand Up @@ -723,10 +726,14 @@ private static final class ButtonChangePage extends Button {

@Override
public void renderWidget(final GuiGraphics graphics, final int mouseX, final int mouseY, final float partialTicks) {
final int offsetX = isHoveredOrFocused() ? BUTTON_WIDTH : 0;
final int offsetX = isHoveredOrFocusedUsingKeyboard() ? BUTTON_WIDTH : 0;
final int offsetY = type == PageChangeType.Previous ? BUTTON_HEIGHT : 0;
graphics.blit(Textures.LOCATION_GUI_BOOK_CODE_BACKGROUND, getX(), getY(), TEXTURE_X + offsetX, TEXTURE_Y + offsetY, BUTTON_WIDTH, BUTTON_HEIGHT);
}

private boolean isHoveredOrFocusedUsingKeyboard() {
return this.isHovered() || this.isFocused() && Minecraft.getInstance().getLastInputType().isKeyboard();
}
}

private static final class ButtonDeletePage extends Button {
Expand All @@ -742,8 +749,12 @@ private static final class ButtonDeletePage extends Button {

@Override
public void renderWidget(final GuiGraphics graphics, final int mouseX, final int mouseY, final float partialTicks) {
final int offsetX = isHoveredOrFocused() ? BUTTON_WIDTH : 0;
final int offsetX = isHoveredOrFocusedUsingKeyboard() ? BUTTON_WIDTH : 0;
graphics.blit(Textures.LOCATION_GUI_BOOK_CODE_BACKGROUND, getX(), getY(), TEXTURE_X + offsetX, TEXTURE_Y, BUTTON_WIDTH, BUTTON_HEIGHT);
}

private boolean isHoveredOrFocusedUsingKeyboard() {
return this.isHovered() || this.isFocused() && Minecraft.getInstance().getLastInputType().isKeyboard();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,6 @@ public void removed() {

@Override
public void render(final GuiGraphics graphics, final int mouseX, final int mouseY, final float partialTicks) {
renderBackground(graphics);

super.render(graphics, mouseX, mouseY, partialTicks);

final BufferBuilder builder = Tesselator.getInstance().getBuilder();
Expand Down
16 changes: 1 addition & 15 deletions fabric/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -22,31 +22,17 @@ loom {
}
}

repositories {
exclusiveContent {
forRepository { maven("https://raw.githubusercontent.com/Fuzss/modresources/main/maven/") }
filter { includeGroup("fuzs.forgeconfigapiport") }
}
exclusiveContent {
forRepository { maven("https://maven.shedaniel.me") }
filter { includeGroup("me.shedaniel") }
}
}

dependencies {
modImplementation(libs.fabric.loader)
modApi(libs.fabric.api)
modApi(libs.fabric.architectury)

modApi(libs.fabric.roughlyEnoughItems)
modImplementation(libs.fabric.manual)
modImplementation(libs.fabric.forgeConfigPort)
modImplementation(libs.fabric.roughlyEnoughItems) {
exclude(group = "net.fabricmc.fabric-api")
}

// Not used by mod, just for dev convenience.
modRuntimeOnly(libs.fabric.tooltipFix)
modRuntimeOnly(libs.fabric.sodium)
}

tasks {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@
import li.cil.tis3d.common.block.entity.fabric.ChunkUnloadListener;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientChunkEvents;
import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry;
import net.fabricmc.fabric.api.event.client.player.ClientPickBlockGatherCallback;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.impl.entrypoint.EntrypointUtils;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.phys.BlockHitResult;
Expand All @@ -26,7 +24,9 @@ public void onInitializeClient() {
ClientBootstrap.run();
ClientSetup.run();

EntrypointUtils.invoke("tis3d:registration", FabricProviderInitializer.class, FabricProviderInitializer::registerProviders);
FabricLoader.getInstance()
.getEntrypoints("tis3d:registration", FabricProviderInitializer.class)
.forEach(FabricProviderInitializer::registerProviders);

ClientChunkEvents.CHUNK_UNLOAD.register((level, chunk) -> {
for (final BlockEntity blockEntity : chunk.getBlockEntities().values()) {
Expand All @@ -53,7 +53,7 @@ public void onInitializeClient() {
if (FabricLoader.getInstance().isModLoaded("sodium")) {
LOGGER.warn("Sodium detected, disabling modules that need custom block model rendering. See https://github.com/MightyPirates/TIS-3D/issues/171");
} else {
ModelLoadingRegistry.INSTANCE.registerResourceProvider(rm -> new ModuleModelLoader());
ModuleModelLoader.initialize();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public void emitBlockQuads(final BlockAndTintGetter blockView, final BlockState
if (module instanceof final ModuleWithBakedModelFabric moduleWithModel && moduleWithModel.hasModel()) {
moduleWithModel.emitBlockQuads(blockView, state, pos, direction, randomSupplier, context);
} else {
((FabricBakedModel) proxy).emitBlockQuads(blockView, state, pos, randomSupplier, context);
proxy.emitBlockQuads(blockView, state, pos, randomSupplier, context);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,29 @@
package li.cil.tis3d.client.renderer.block.fabric;

import li.cil.tis3d.api.API;
import net.fabricmc.fabric.api.client.model.ModelProviderContext;
import net.fabricmc.fabric.api.client.model.ModelResourceProvider;
import net.fabricmc.fabric.api.client.model.loading.v1.ModelLoadingPlugin;
import net.fabricmc.fabric.api.client.model.loading.v1.ModelModifier;
import net.minecraft.client.resources.model.UnbakedModel;
import net.minecraft.resources.ResourceLocation;

public final class ModuleModelLoader implements ModelResourceProvider {
public final class ModuleModelLoader implements ModelLoadingPlugin, ModelModifier.OnLoad {
private static final ResourceLocation BLOCK_CASING_MODULE_MODEL_LOCATION = new ResourceLocation(API.MOD_ID, "block/casing_module");

public static void initialize() {
ModelLoadingPlugin.register(new ModuleModelLoader());
}

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

@Override
public UnbakedModel loadModelResource(final ResourceLocation resourceId, final ModelProviderContext context) {
if (resourceId.equals(BLOCK_CASING_MODULE_MODEL_LOCATION)) {
return new ModuleUnbakedModel(context.loadModel(new ResourceLocation(resourceId.getNamespace(), resourceId.getPath() + "_proxy")));
public UnbakedModel modifyModelOnLoad(UnbakedModel model, ModelModifier.OnLoad.Context context) {
if (context.id().equals(BLOCK_CASING_MODULE_MODEL_LOCATION)) {
return new ModuleUnbakedModel(context.getOrLoadModel(new ResourceLocation(context.id().getNamespace(), context.id().getPath() + "_proxy")));
} else {
return null;
return model;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
import li.cil.tis3d.common.item.Items;
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider;
import net.minecraft.advancements.critereon.AbstractCriterionTriggerInstance;
import net.minecraft.advancements.Criterion;
import net.minecraft.advancements.critereon.InventoryChangeTrigger;
import net.minecraft.advancements.critereon.ItemPredicate;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.recipes.FinishedRecipe;
import net.minecraft.data.recipes.RecipeCategory;
import net.minecraft.data.recipes.RecipeOutput;
import net.minecraft.data.recipes.ShapedRecipeBuilder;
import net.minecraft.data.recipes.ShapelessRecipeBuilder;
import net.minecraft.resources.ResourceLocation;
Expand All @@ -20,15 +20,14 @@
import net.minecraft.world.level.ItemLike;

import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;

public final class ModRecipesProvider extends FabricRecipeProvider {
public ModRecipesProvider(final FabricDataOutput output, final CompletableFuture<HolderLookup.Provider> ignoredRegistries) {
super(output);
}

@Override
public void buildRecipes(final Consumer<FinishedRecipe> consumer) {
public void buildRecipes(final RecipeOutput consumer) {
ShapedRecipeBuilder
.shaped(RecipeCategory.REDSTONE, Items.CASING.get(), 8)
.pattern("IRI")
Expand Down Expand Up @@ -128,17 +127,17 @@ public void buildRecipes(final Consumer<FinishedRecipe> consumer) {
.save(consumer, new ResourceLocation(API.MOD_ID, Items.STACK_MODULE.getId().getPath() + "/from_queue"));
}

private static ShapedRecipeBuilder module(final RegistrySupplier<? extends Item> module, final int count, final Item item, final AbstractCriterionTriggerInstance unlockedBy) {
private static ShapedRecipeBuilder module(final RegistrySupplier<? extends Item> module, final int count, final Item item, final Criterion<InventoryChangeTrigger.TriggerInstance> unlockedBy) {
return module(module, count, unlockedBy)
.define('S', item);
}

private static ShapedRecipeBuilder module(final RegistrySupplier<? extends Item> module, final int count, final TagKey<Item> tag, final AbstractCriterionTriggerInstance unlockedBy) {
private static ShapedRecipeBuilder module(final RegistrySupplier<? extends Item> module, final int count, final TagKey<Item> tag, final Criterion<InventoryChangeTrigger.TriggerInstance> unlockedBy) {
return module(module, count, unlockedBy)
.define('S', tag);
}

private static ShapedRecipeBuilder module(final RegistrySupplier<? extends Item> module, final int count, final AbstractCriterionTriggerInstance unlockedBy) {
private static ShapedRecipeBuilder module(final RegistrySupplier<? extends Item> module, final int count, final Criterion<InventoryChangeTrigger.TriggerInstance> unlockedBy) {
return ShapedRecipeBuilder
.shaped(RecipeCategory.MISC, module.get(), count)
.pattern("PPP")
Expand All @@ -150,11 +149,11 @@ private static ShapedRecipeBuilder module(final RegistrySupplier<? extends Item>
.unlockedBy("has_base_item", unlockedBy);
}

private static InventoryChangeTrigger.TriggerInstance inventoryChange(final TagKey<Item> tag) {
private static Criterion<InventoryChangeTrigger.TriggerInstance> inventoryChange(final TagKey<Item> tag) {
return InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(tag).build());
}

private static InventoryChangeTrigger.TriggerInstance inventoryChange(final ItemLike item) {
private static Criterion<InventoryChangeTrigger.TriggerInstance> inventoryChange(final ItemLike item) {
return InventoryChangeTrigger.TriggerInstance.hasItems(item);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import dev.architectury.registry.registries.RegistrySupplier;
import li.cil.tis3d.api.API;
import li.cil.tis3d.common.item.Items;
import net.minecraft.advancements.critereon.AbstractCriterionTriggerInstance;
import net.minecraft.advancements.Criterion;
import net.minecraft.advancements.critereon.InventoryChangeTrigger;
import net.minecraft.advancements.critereon.ItemPredicate;
import net.minecraft.data.PackOutput;
Expand All @@ -15,15 +15,13 @@
import net.minecraft.world.level.ItemLike;
import net.minecraftforge.common.Tags;

import java.util.function.Consumer;

public final class ModRecipesProvider extends RecipeProvider {
public ModRecipesProvider(final PackOutput output) {
super(output);
}

@Override
protected void buildRecipes(final Consumer<FinishedRecipe> consumer) {
protected void buildRecipes(final RecipeOutput consumer) {
ShapedRecipeBuilder
.shaped(RecipeCategory.REDSTONE, Items.CASING.get(), 8)
.pattern("IRI")
Expand Down Expand Up @@ -123,17 +121,17 @@ protected void buildRecipes(final Consumer<FinishedRecipe> consumer) {
.save(consumer, new ResourceLocation(API.MOD_ID, Items.STACK_MODULE.getId().getPath() + "/from_queue"));
}

private static ShapedRecipeBuilder module(final RegistrySupplier<? extends Item> module, final int count, final Item item, final AbstractCriterionTriggerInstance unlockedBy) {
private static ShapedRecipeBuilder module(final RegistrySupplier<? extends Item> module, final int count, final Item item, final Criterion<InventoryChangeTrigger.TriggerInstance> unlockedBy) {
return module(module, count, unlockedBy)
.define('S', item);
}

private static ShapedRecipeBuilder module(final RegistrySupplier<? extends Item> module, final int count, final TagKey<Item> tag, final AbstractCriterionTriggerInstance unlockedBy) {
private static ShapedRecipeBuilder module(final RegistrySupplier<? extends Item> module, final int count, final TagKey<Item> tag, final Criterion<InventoryChangeTrigger.TriggerInstance> unlockedBy) {
return module(module, count, unlockedBy)
.define('S', tag);
}

private static ShapedRecipeBuilder module(final RegistrySupplier<? extends Item> module, final int count, final AbstractCriterionTriggerInstance unlockedBy) {
private static ShapedRecipeBuilder module(final RegistrySupplier<? extends Item> module, final int count, final Criterion<InventoryChangeTrigger.TriggerInstance> unlockedBy) {
return ShapedRecipeBuilder
.shaped(RecipeCategory.MISC, module.get(), count)
.pattern("PPP")
Expand All @@ -145,11 +143,11 @@ private static ShapedRecipeBuilder module(final RegistrySupplier<? extends Item>
.unlockedBy("has_base_item", unlockedBy);
}

private static InventoryChangeTrigger.TriggerInstance inventoryChange(final TagKey<Item> tag) {
private static Criterion<InventoryChangeTrigger.TriggerInstance> inventoryChange(final TagKey<Item> tag) {
return InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(tag).build());
}

private static InventoryChangeTrigger.TriggerInstance inventoryChange(final ItemLike item) {
private static Criterion<InventoryChangeTrigger.TriggerInstance> inventoryChange(final ItemLike item) {
return InventoryChangeTrigger.TriggerInstance.hasItems(item);
}
}
Loading

0 comments on commit 60a99b5

Please sign in to comment.