Skip to content

Commit

Permalink
move to multiloader setup
Browse files Browse the repository at this point in the history
  • Loading branch information
UpcraftLP committed Jan 12, 2024
1 parent 0a373e4 commit 6df394f
Show file tree
Hide file tree
Showing 275 changed files with 1,295 additions and 614 deletions.
26 changes: 22 additions & 4 deletions .github/workflows/build_status.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,27 @@ jobs:
run: chmod +x ./gradlew
- name: Build with Gradle
run: ./gradlew build
- uses: actions/upload-artifact@v4
- name: Upload build artifacts (Common)
continue-on-error: true
uses: actions/upload-artifact@v4
with:
name: ${{ github.event.repository.name }}-${{ github.sha }}
name: ${{ github.event.repository.name }}-Common-${{ github.sha }}
path: |
build/libs/*.jar
!build/libs/*-dev.jar
Common/build/libs/*.jar
!Common/build/libs/*-dev.jar
- name: Upload build artifacts (NeoForge)
continue-on-error: true
uses: actions/upload-artifact@v4
with:
name: ${{ github.event.repository.name }}-NeoForge-${{ github.sha }}
path: |
NeoForge/build/libs/*.jar
!NeoForge/build/libs/*-dev.jar
- name: Upload build artifacts (Quilt)
continue-on-error: true
uses: actions/upload-artifact@v4
with:
name: ${{ github.event.repository.name }}-Quilt-${{ github.sha }}
path: |
Quilt/build/libs/*.jar
!Quilt/build/libs/*-dev.jar
22 changes: 20 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,27 @@ jobs:
MAVEN_UPLOAD_USERNAME: ${{ secrets.MAVEN_UPLOAD_USERNAME }}
MAVEN_UPLOAD_PASSWORD: ${{ secrets.MAVEN_UPLOAD_PASSWORD }}
run: ./gradlew publish
- name: Publish
- name: Publish (GitHub Releases)
uses: Kir-Antipov/[email protected]
with:
github-token: ${{ github.token }}
files: |
**/build/libs/!(*-@(dev|sources|javadoc)).jar
**/build/libs/*-@(sources|javadoc).jar
- name: Publish (NeoForge)
uses: Kir-Antipov/[email protected]
with:
modrinth-token: ${{ secrets.MODRINTH_TOKEN }}
curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }}
github-token: ${{ github.token }}
version: ${{ github.ref_name }}+NeoForge
files: |
NeoForge/build/libs/!(*-@(dev|sources|javadoc)).jar
NeoForge/build/libs/*-@(sources|javadoc).jar
- name: Publish (Quilt)
uses: Kir-Antipov/[email protected]
with:
modrinth-token: ${{ secrets.MODRINTH_TOKEN }}
curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }}
files: |
Quilt/build/libs/!(*-@(dev|sources|javadoc)).jar
Quilt/build/libs/*-@(sources|javadoc).jar
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,11 @@ $RECYCLE.BIN/
.gradle
build/

# Misc
mcModsRepo/
.tmp/
.data/

# Ignore Gradle GUI config
gradle-app.setting

Expand Down
17 changes: 17 additions & 0 deletions Common/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
plugins {
alias libs.plugins.vanilla.gradle
}

minecraft {
version(libs.versions.minecraft.get())
if (file("src/main/resources/${mod_id}.accesswidener").exists()) {
accessWideners(file("src/main/resources/${mod_id}.accesswidener"))
}
}

dependencies {
compileOnly libs.bundles.mixin
compileOnly libs.jetbrains.annotations

implementation libs.resourcefulconfig
}
35 changes: 35 additions & 0 deletions Common/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
[versions]
minecraft = "1.20.1"

# The latest versions are available at https://parchmentmc.org/docs/getting-started
parchment = "2023.09.03"

mixin = "0.8.5"
mixin_extras = "0.3.2"
asm = "9.6"
jetbrains_annotations = "24.1.0"
vanilla_gradle = "0.2.1-SNAPSHOT"

resourcefulconfig = "2.1.1"

[libraries]
minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" }
parchment_mappings = { module = "org.parchmentmc.data:parchment-1.20.1", version.ref = "parchment" }
mixin = { module = "org.spongepowered:mixin", version.ref = "mixin" }
mixin_extras = { module = "io.github.llamalad7:mixinextras-common", version.ref = "mixin_extras" }
asm = { module = "org.ow2.asm:asm", version.ref = "asm" }
asm_analysis = { module = "org.ow2.asm:asm-analysis", version.ref = "asm" }
asm_commons = { module = "org.ow2.asm:asm-commons", version.ref = "asm" }
asm_tree = { module = "org.ow2.asm:asm-tree", version.ref = "asm" }
asm_util = { module = "org.ow2.asm:asm-util", version.ref = "asm" }
jetbrains_annotations = { module = "org.jetbrains:annotations", version.ref = "jetbrains_annotations" }

resourcefulconfig = { module = "com.teamresourceful.resourcefulconfig:resourcefulconfig-common-1.20.1", version.ref = "resourcefulconfig" }
resourcefulconfig_fabric = { module = "com.teamresourceful.resourcefulconfig:resourcefulconfig-fabric-1.20.1", version.ref = "resourcefulconfig" }
resourcefulconfig_forge = { module = "com.teamresourceful.resourcefulconfig:resourcefulconfig-forge-1.20.1", version.ref = "resourcefulconfig" }

[bundles]
mixin = ["mixin", "mixin_extras", "asm", "asm_analysis", "asm_commons", "asm_tree", "asm_util"]

[plugins]
vanilla_gradle = { id = "org.spongepowered.gradle.vanilla", version.ref = "vanilla_gradle" }
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package dev.cammiescorner.camsbackpacks;

import com.teamresourceful.resourcefulconfig.common.config.Configurator;
import dev.cammiescorner.camsbackpacks.config.BackpacksConfig;
import dev.cammiescorner.camsbackpacks.init.ModBlockEntities;
import dev.cammiescorner.camsbackpacks.init.ModBlocks;
import dev.cammiescorner.camsbackpacks.init.ModScreenHandlers;
import dev.cammiescorner.camsbackpacks.util.platform.Services;
import net.minecraft.resources.ResourceLocation;

public class CamsBackpacks {

public static final String MOD_ID = "camsbackpacks";
public static final Configurator CONFIGURATOR = new Configurator();

public static void init() {
CONFIGURATOR.registerConfig(BackpacksConfig.class);

ModBlocks.register();
ModBlockEntities.register();
ModScreenHandlers.register();
}

public static ResourceLocation id(String path) {
return new ResourceLocation(MOD_ID, path);
}

public static String getIssuesURL() {
return Services.PLATFORM.getIssuesUrl();
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package dev.cammiescorner.camsbackpacks.common.blocks;
package dev.cammiescorner.camsbackpacks.block;

import com.google.common.base.Suppliers;
import dev.cammiescorner.camsbackpacks.common.blocks.entities.BackpackBlockEntity;
import dev.cammiescorner.camsbackpacks.core.BackpacksConfig;
import dev.cammiescorner.camsbackpacks.block.entity.BackpackBlockEntity;
import dev.cammiescorner.camsbackpacks.config.ClientConfig;
import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
Expand Down Expand Up @@ -30,13 +29,13 @@
import net.minecraft.world.level.block.state.properties.DirectionProperty;
import net.minecraft.world.level.material.FluidState;
import net.minecraft.world.level.material.Fluids;
import net.minecraft.world.level.material.PushReaction;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.jetbrains.annotations.Nullable;

@SuppressWarnings("deprecation")
public class BackpackBlock extends BaseEntityBlock implements SimpleWaterloggedBlock {
private final DyeColor colour;
public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING;
Expand All @@ -51,6 +50,13 @@ public BackpackBlock(BlockBehaviour.Properties properties, DyeColor colour) {
this.colour = colour;
}

/**
* Checks if the block at the given position is replaceable by a backpack.
*/
public static boolean isStateReplaceable(Level world, BlockPos pos) {
return world.getBlockState(pos).canBeReplaced();
}

@Override
public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
return switch (state.getValue(FACING)) {
Expand Down Expand Up @@ -80,7 +86,7 @@ public InteractionResult use(BlockState state, Level world, BlockPos pos, Player
}


if (BackpacksConfig.sneakPlaceBackpack && player.isShiftKeyDown() && player.getItemBySlot(EquipmentSlot.CHEST).isEmpty()) {
if (ClientConfig.sneakPlaceBackpack && player.isShiftKeyDown() && player.getItemBySlot(EquipmentSlot.CHEST).isEmpty()) {
if (world.getBlockEntity(pos) instanceof BackpackBlockEntity blockEntity) {
ItemStack stack = new ItemStack(this);
CompoundTag tag = stack.getOrCreateTag();
Expand Down Expand Up @@ -177,4 +183,10 @@ protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockSt
public DyeColor getColour() {
return colour;
}

@Nullable
@Override
public MenuProvider getMenuProvider(BlockState $$0, Level $$1, BlockPos $$2) {
return $$1.getBlockEntity($$2) instanceof BackpackBlockEntity backpack ? backpack.getMenuProvider() : super.getMenuProvider($$0, $$1, $$2);
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package dev.cammiescorner.camsbackpacks.common.blocks.entities;
package dev.cammiescorner.camsbackpacks.block.entity;

import dev.cammiescorner.camsbackpacks.common.menu.BackpackMenu;
import dev.cammiescorner.camsbackpacks.core.registry.ModBlockEntities;
import net.fabricmc.fabric.api.screenhandler.v1.ExtendedScreenHandlerFactory;
import dev.cammiescorner.camsbackpacks.init.ModBlockEntities;
import dev.cammiescorner.camsbackpacks.menu.BackpackMenu;
import dev.cammiescorner.camsbackpacks.util.platform.Services;
import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList;
import net.minecraft.nbt.CompoundTag;
Expand All @@ -12,6 +12,7 @@
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.Container;
import net.minecraft.world.ContainerHelper;
import net.minecraft.world.MenuProvider;
import net.minecraft.world.Nameable;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
Expand All @@ -22,13 +23,13 @@
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.Nullable;

public class BackpackBlockEntity extends BlockEntity implements Container, Nameable, ExtendedScreenHandlerFactory {
public class BackpackBlockEntity extends BlockEntity implements Container, Nameable {
public final NonNullList<ItemStack> inventory = NonNullList.withSize(36, ItemStack.EMPTY);
public boolean wasPickedUp = false;
private Component name = Component.nullToEmpty("");

public BackpackBlockEntity(BlockPos pos, BlockState state) {
super(ModBlockEntities.BACKPACK, pos, state);
super(ModBlockEntities.BACKPACK.get(), pos, state);
}

@Override
Expand Down Expand Up @@ -106,13 +107,15 @@ public Component getDisplayName() {
return getName();
}

@Override
public MenuProvider getMenuProvider() {
return Services.MENU.getMenuProvider(this);
}

public @Nullable AbstractContainerMenu createMenu(int syncId, Inventory inv, Player player) {
return new BackpackMenu(syncId, inv, this, ContainerLevelAccess.create(player.level(), getBlockPos()), getBlockPos(), true);
}

@Override
public void writeScreenOpeningData(ServerPlayer player, FriendlyByteBuf buf) {
public void writeInitMenuData(ServerPlayer player, FriendlyByteBuf buf) {
buf.writeBlockPos(getBlockPos());
buf.writeBoolean(true);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package dev.cammiescorner.camsbackpacks.client;

import dev.cammiescorner.camsbackpacks.CamsBackpacks;
import dev.cammiescorner.camsbackpacks.client.screen.BackpackScreen;
import dev.cammiescorner.camsbackpacks.init.ModScreenHandlers;
import net.minecraft.client.gui.screens.MenuScreens;
import net.minecraft.client.model.geom.ModelLayerLocation;

public class CamsBackpacksClient {
public static final ModelLayerLocation BACKPACK = new ModelLayerLocation(CamsBackpacks.id("backpack"), "main");
public static boolean backpackScreenIsOpen = true;
public static boolean chestSlotUiEnabled = true;

public static void init() {
MenuScreens.register(ModScreenHandlers.BACKPACK_SCREEN_HANDLER.get(), BackpackScreen::new);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import dev.cammiescorner.camsbackpacks.CamsBackpacks;
import dev.cammiescorner.camsbackpacks.client.CamsBackpacksClient;
import dev.cammiescorner.camsbackpacks.client.models.BackpackModel;
import dev.cammiescorner.camsbackpacks.common.items.BackpackItem;
import dev.cammiescorner.camsbackpacks.core.registry.ModBlocks;
import dev.cammiescorner.camsbackpacks.init.ModBlocks;
import dev.cammiescorner.camsbackpacks.item.BackpackItem;
import net.minecraft.client.model.EntityModel;
import net.minecraft.client.model.geom.EntityModelSet;
import net.minecraft.client.renderer.MultiBufferSource;
Expand Down Expand Up @@ -41,31 +41,31 @@ public void render(PoseStack matrices, MultiBufferSource vertexConsumers, int li
float g = colour[1];
float b = colour[2];

if (stack.is(ModBlocks.GAY_BACKPACK.asItem()))
if (stack.is(ModBlocks.GAY_BACKPACK.get().asItem()))
texturePath = CamsBackpacks.id("textures/block/gay_pride_backpack.png");
if (stack.is(ModBlocks.LESBIAN_BACKPACK.asItem()))
if (stack.is(ModBlocks.LESBIAN_BACKPACK.get().asItem()))
texturePath = CamsBackpacks.id("textures/block/lesbian_pride_backpack.png");
if (stack.is(ModBlocks.QPOC_BACKPACK.asItem()))
if (stack.is(ModBlocks.QPOC_BACKPACK.get().asItem()))
texturePath = CamsBackpacks.id("textures/block/qpoc_pride_backpack.png");
if (stack.is(ModBlocks.BI_BACKPACK.asItem()))
if (stack.is(ModBlocks.BI_BACKPACK.get().asItem()))
texturePath = CamsBackpacks.id("textures/block/bi_pride_backpack.png");
if (stack.is(ModBlocks.PAN_BACKPACK.asItem()))
if (stack.is(ModBlocks.PAN_BACKPACK.get().asItem()))
texturePath = CamsBackpacks.id("textures/block/pan_pride_backpack.png");
if (stack.is(ModBlocks.TRANS_BACKPACK.asItem()))
if (stack.is(ModBlocks.TRANS_BACKPACK.get().asItem()))
texturePath = CamsBackpacks.id("textures/block/trans_pride_backpack.png");
if (stack.is(ModBlocks.GENDERQUEER_BACKPACK.asItem()))
if (stack.is(ModBlocks.GENDERQUEER_BACKPACK.get().asItem()))
texturePath = CamsBackpacks.id("textures/block/genderqueer_pride_backpack.png");
if (stack.is(ModBlocks.GENDERFLUID_BACKPACK.asItem()))
if (stack.is(ModBlocks.GENDERFLUID_BACKPACK.get().asItem()))
texturePath = CamsBackpacks.id("textures/block/genderfluid_pride_backpack.png");
if (stack.is(ModBlocks.ENBY_BACKPACK.asItem()))
if (stack.is(ModBlocks.ENBY_BACKPACK.get().asItem()))
texturePath = CamsBackpacks.id("textures/block/enby_pride_backpack.png");
if (stack.is(ModBlocks.ACE_BACKPACK.asItem()))
if (stack.is(ModBlocks.ACE_BACKPACK.get().asItem()))
texturePath = CamsBackpacks.id("textures/block/ace_pride_backpack.png");
if (stack.is(ModBlocks.DEMI_BACKPACK.asItem()))
if (stack.is(ModBlocks.DEMI_BACKPACK.get().asItem()))
texturePath = CamsBackpacks.id("textures/block/demi_pride_backpack.png");
if (stack.is(ModBlocks.ARO_BACKPACK.asItem()))
if (stack.is(ModBlocks.ARO_BACKPACK.get().asItem()))
texturePath = CamsBackpacks.id("textures/block/aro_pride_backpack.png");
if (stack.is(ModBlocks.AGENDER_BACKPACK.asItem()))
if (stack.is(ModBlocks.AGENDER_BACKPACK.get().asItem()))
texturePath = CamsBackpacks.id("textures/block/agender_pride_backpack.png");

matrices.pushPose();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import dev.cammiescorner.camsbackpacks.CamsBackpacks;
import dev.cammiescorner.camsbackpacks.block.BackpackBlock;
import dev.cammiescorner.camsbackpacks.client.CamsBackpacksClient;
import dev.cammiescorner.camsbackpacks.common.network.EquipBackpackPacket;
import dev.cammiescorner.camsbackpacks.common.menu.BackpackMenu;
import dev.cammiescorner.camsbackpacks.core.util.BackpackHelper;
import dev.cammiescorner.camsbackpacks.menu.BackpackMenu;
import dev.cammiescorner.camsbackpacks.network.c2s.EquipBackpackPacket;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.screens.inventory.EffectRenderingInventoryScreen;
Expand Down Expand Up @@ -109,7 +109,7 @@ protected void containerTick() {
menu.blockPos = player.blockPosition().relative(player.getDirection());

if (equipButton != null)
equipButton.active = (!menu.isBlockEntity && BackpackHelper.isReplaceable(player.level(), menu.blockPos)) || player.getItemBySlot(EquipmentSlot.CHEST).isEmpty();
equipButton.active = (!menu.isBlockEntity && BackpackBlock.isStateReplaceable(player.level(), menu.blockPos)) || player.getItemBySlot(EquipmentSlot.CHEST).isEmpty();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package dev.cammiescorner.camsbackpacks.compat;

import dev.cammiescorner.camsbackpacks.util.platform.Services;

public class ModCompat {

public static final boolean UNIVERSAL_GRAVES = Services.PLATFORM.isModLoaded("universal-graves");
}
Loading

0 comments on commit 6df394f

Please sign in to comment.