Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
38 changes: 17 additions & 21 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Java CI

on:
push:
branches: [ main, dev ]
branches: [ 1.16/main, 1.16/dev ]
workflow_dispatch:
inputs:
norelease:
Expand All @@ -16,36 +16,32 @@ jobs:
if: |
!contains(github.event.head_commit.message, '[ciskip]')
steps:
- uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
fetch-depth: 30 # Gets the last 30 commits so the changelog might work
- name: Set up JDK 11
uses: actions/setup-java@v2
uses: actions/setup-java@v3
with:
distribution: 'adopt'
java-version: '11'
- name: Build with Gradle
distribution: 'temurin'
java-version: '16'
- name: Fix borked permissions
run: chmod +x ./gradlew
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
- name: Build and Publish with Gradle
uses: gradle/gradle-build-action@v2
env:
FTB_MAVEN_TOKEN: ${{ secrets.FTB_MAVEN_TOKEN}}
SAPS_TOKEN: ${{ secrets.SAPS_TOKEN }}
run: |
chmod +x ./gradlew
./gradlew build publish --stacktrace --no-daemon
with:
arguments: build publish --stacktrace --no-daemon
- name: Release to CurseForge
uses: gradle/gradle-build-action@v2
if: |
github.ref == 'refs/heads/main' && !contains(github.event.head_commit.message, '[norelease]') && github.event.inputs.norelease != 'true'
contains(github.ref, 'main') && !contains(github.event.head_commit.message, '[norelease]') && github.event.inputs.norelease != 'true'
env:
GIT_COMMIT: ${{ github.event.after }}
GIT_PREVIOUS_COMMIT: ${{ github.event.before }}
CURSEFORGE_KEY: ${{ secrets.CURSEFORGE_KEY }}
run: |
chmod +x ./gradlew
./gradlew build curseforge --stacktrace --no-daemon
with:
arguments: build curseforge --stacktrace --no-daemon
45 changes: 25 additions & 20 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
plugins {
id "dev.architectury.loom" version "0.7.2-SNAPSHOT"
id "dev.architectury.loom" version "0.10.0-SNAPSHOT"
id 'maven-publish'
id "com.matthewprenger.cursegradle" version "1.4.0"
}

apply from: 'https://files.latmod.com/public/markdown-git-changelog.gradle'
apply from: 'https://files.saps.dev/ci/git-md-changelog.gradle'

sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
Expand All @@ -17,25 +17,27 @@ group = project.maven_group
loom {
silentMojangMappingsLicense()

mixinConfigs = [
]

useFabricMixin = true

dataGen {
mod project.mod_id
}
forge {
dataGen {
mod project.mod_id
}

launches {
data {
arg "--existing", file("src/main/resources").absolutePath
arg "--assetIndex", "1.16"
arg "--assetsDir", (ENV.GRADLE_USER_HOME ?: "${System.getProperty("user.home")}/.gradle") + "/caches/fabric-loom/assets"
launches {
data {
arg "--existing", file("src/main/resources").absolutePath
arg "--assetIndex", "1.16"
arg "--assetsDir", (ENV.GRADLE_USER_HOME ?: "${System.getProperty("user.home")}/.gradle") + "/caches/fabric-loom/assets"
}
}
}
}

repositories {
maven {
name = 'ParchmentMC'
url = 'https://maven.parchmentmc.org'
}

maven {
url "https://maven.shedaniel.me/"
content {
Expand All @@ -61,7 +63,10 @@ repositories {

dependencies {
minecraft "com.mojang:minecraft:${rootProject.minecraft_version}"
mappings minecraft.officialMojangMappings()
mappings loom.layered() {
officialMojangMappings()
parchment("org.parchmentmc.data:parchment-1.16.5:2022.03.06")
}
forge "net.minecraftforge:forge:${rootProject.minecraft_version}-${rootProject.forge_version}"
modImplementation "curse.maven:projecte-226410:${projecte_file}"
modImplementation "curse.maven:jei-238222:${jei_file}"
Expand Down Expand Up @@ -123,17 +128,17 @@ publishing {
maven {
url "https://maven.ftb.dev/release"
credentials {
username = "latvian"
username = "ftb"
password = "${ENV.FTB_MAVEN_TOKEN}"
}
}
}

if (ENV.SAPS_TOKEN) {
maven {
url "https://maven.saps.dev/minecraft"
url "https://maven.saps.dev/releases"
credentials {
username = "latvian"
username = "ftb"
password = "${ENV.SAPS_TOKEN}"
}
}
Expand All @@ -148,7 +153,7 @@ if (ENV.CURSEFORGE_KEY) {
id = project.curseforge_id
releaseType = project.curseforge_type
addGameVersion "1.16.5"
mainArtifact(remapJar.archivePath)
mainArtifact(remapJar.archiveFile)
relations {
requiredDependency 'projecte'
}
Expand Down
8 changes: 4 additions & 4 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ org.gradle.jvmargs=-Xmx1G
loom.platform=forge
minecraft_version=1.16.5
forge_version=36.2.2
mod_version=1605.2.0
maven_group=dev.latvian.mods
archives_base_name=projectex
mod_version=1605.2.1
maven_group=dev.ftb.mods
archives_base_name=ftb-projectex
mod_id=projectex
mod_author=LatvianModder
curseforge_id=311378
curseforge_type=alpha
projecte_file=3223221
projecte_file=3736621
jei_file=3192904
46 changes: 46 additions & 0 deletions src/main/java/dev/latvian/mods/projectex/EMCSyncHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package dev.latvian.mods.projectex;

import moze_intel.projecte.api.ProjectEAPI;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.fml.server.ServerLifecycleHooks;

import java.util.HashSet;
import java.util.Set;
import java.util.UUID;

/**
* Track players who need their EMC value sync'd, and do it in a controlled fashion once a second instead of every time
* an EMC link block does anything. Avoids excessive sync'ing and performance issues with many such blocks in the world.
*/
public enum EMCSyncHandler {
INSTANCE;

private final Set<UUID> toSync = new HashSet<>(); // UUID of players who need EMC sync'd
private int counter = 0;

public void needsSync(ServerPlayer player) {
toSync.add(player.getUUID());
}

public void needsSync(UUID playerId) {
toSync.add(playerId);
}

public void onServerTick(TickEvent.ServerTickEvent event) {
if (event.phase == TickEvent.Phase.END) {
counter++;
if (counter == 20) {
MinecraftServer server = ServerLifecycleHooks.getCurrentServer();
toSync.stream()
.map(id -> server.getPlayerList().getPlayer(id))
.filter(player -> player != null && player.isAlive())
.forEach(player -> player.getCapability(ProjectEAPI.KNOWLEDGE_CAPABILITY)
.ifPresent(provider -> provider.syncEmc(player)));
toSync.clear();
counter = 0;
}
}
}
}
5 changes: 5 additions & 0 deletions src/main/java/dev/latvian/mods/projectex/ProjectEX.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;

Expand Down Expand Up @@ -40,5 +42,8 @@ public ItemStack makeIcon() {

//ProjectEXNet.init();
//PROXY.init();

IEventBus forgeBus = MinecraftForge.EVENT_BUS;
forgeBus.addListener(EMCSyncHandler.INSTANCE::onServerTick);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,7 @@ public BlockState getStateForPlacement(BlockPlaceContext ctx) {
@Deprecated
public InteractionResult use(@Nonnull BlockState state, Level world, @Nonnull BlockPos pos, @Nonnull Player player, @Nonnull InteractionHand hand, @Nonnull BlockHitResult rtr) {
if (!world.isClientSide) {
NetworkHooks.openGui((ServerPlayer) player, new ContainerProvider(), (b) -> {
b.writeEnum(InteractionHand.OFF_HAND);
});
NetworkHooks.openGui((ServerPlayer) player, new ContainerProvider(), b -> b.writeBoolean(false));
}

return InteractionResult.SUCCESS;
Expand All @@ -95,7 +93,7 @@ private ContainerProvider() {

@Override
public AbstractContainerMenu createMenu(int windowId, @Nonnull Inventory playerInventory, @Nonnull Player player) {
return new TransmutationContainer(windowId, playerInventory, InteractionHand.OFF_HAND);
return new TransmutationContainer(windowId, playerInventory);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dev.latvian.mods.projectex.block.entity;

import dev.latvian.mods.projectex.EMCSyncHandler;
import moze_intel.projecte.api.ProjectEAPI;
import moze_intel.projecte.api.capabilities.IKnowledgeProvider;
import moze_intel.projecte.api.capabilities.tile.IEmcStorage;
Expand Down Expand Up @@ -77,7 +78,7 @@ public void tick() {
provider.setEmc(provider.getEmc().add(storedEMC));
storedEMC = BigInteger.ZERO;
setChanged();
provider.syncEmc(player);
EMCSyncHandler.INSTANCE.needsSync(player);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dev.latvian.mods.projectex.block.entity;

import dev.latvian.mods.projectex.EMCSyncHandler;
import dev.latvian.mods.projectex.block.PowerFlowerBlock;
import moze_intel.projecte.api.ProjectEAPI;
import moze_intel.projecte.api.capabilities.IKnowledgeProvider;
Expand Down Expand Up @@ -80,7 +81,7 @@ public void tick() {
setChanged();
}

provider.syncEmc(player);
EMCSyncHandler.INSTANCE.needsSync(player);
} else {
storedEMC = storedEMC.add(BigInteger.valueOf(gen));
setChanged();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,11 @@ public ArcaneTabletItem() {
@Nonnull
public InteractionResultHolder<ItemStack> use(@Nonnull Level world, @Nonnull Player player, @Nonnull InteractionHand hand) {
if (!world.isClientSide) {
NetworkHooks.openGui((ServerPlayer) player, new ContainerProvider(hand), (buf) -> buf.writeEnum(hand));
NetworkHooks.openGui((ServerPlayer) player, new ContainerProvider(), b -> {
b.writeBoolean(true);
b.writeEnum(hand);
b.writeByte(player.inventory.selected);
});
}

return InteractionResultHolder.success(player.getItemInHand(hand));
Expand All @@ -48,15 +52,13 @@ public void appendHoverText(ItemStack stack, @Nullable Level level, List<Compone
}

private static class ContainerProvider implements MenuProvider {
private final InteractionHand hand;

private ContainerProvider(InteractionHand hand) {
this.hand = hand;
private ContainerProvider() {
}

@Override
public AbstractContainerMenu createMenu(int windowId, @Nonnull Inventory playerInventory, @Nonnull Player player) {
return new TransmutationContainer(windowId, playerInventory, this.hand);
return new TransmutationContainer(windowId, playerInventory);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package dev.latvian.mods.projectex.item;

import dev.latvian.mods.projectex.EMCSyncHandler;
import dev.latvian.mods.projectex.ProjectEX;
import moze_intel.projecte.api.ProjectEAPI;
import moze_intel.projecte.api.capabilities.IKnowledgeProvider;
Expand Down Expand Up @@ -40,7 +41,7 @@ public InteractionResultHolder<ItemStack> use(Level level, Player player, Intera
if (!level.isClientSide() && player.isCrouching()) {
IKnowledgeProvider provider = player.getCapability(ProjectEAPI.KNOWLEDGE_CAPABILITY).orElse(null);
provider.setEmc(BigInteger.ZERO);
provider.syncEmc((ServerPlayer) player);
EMCSyncHandler.INSTANCE.needsSync((ServerPlayer) player);
return InteractionResultHolder.success(player.getItemInHand(hand));
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/META-INF/mods.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@ side = "BOTH"
[[dependencies.projectex]]
modId = "projecte"
mandatory = true
versionRange = "*"
versionRange = "[PE1.0.2,)"
ordering = "AFTER"
side = "BOTH"