Skip to content

Commit

Permalink
1.17.1
Browse files Browse the repository at this point in the history
  • Loading branch information
Rakambda committed Jul 31, 2021
1 parent f4a8148 commit 7c72200
Show file tree
Hide file tree
Showing 18 changed files with 289 additions and 237 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## [Unreleased]
### Changed
- Port to 1.17
- Port to 1.17.1

## [1.16.5-2.2.1] - 2021-04-26
### Changed
Expand Down
12 changes: 8 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,13 @@ allprojects {
url = 'https://minecraft.curseforge.com/api/maven'
}
maven {
name = "ModMenu"
url = "https://maven.terraformersmc.com/releases/"
name "ModMenu Github"
url = "https://raw.githubusercontent.com/TerraformersMC/Archive/main/releases/"
}
// maven {
// name = "ModMenu"
// url = "https://maven.terraformersmc.com/releases/"
// }
maven {
name = "Cloth Config"
url = "https://maven.shedaniel.me/"
Expand All @@ -62,8 +66,8 @@ group = "fr.raksrinana"
archivesBaseName = "${project.modName}-${project.minecraft_version}"

task buildJar(type: Jar, group: "modding") {
dependsOn ":common:jar", ":fabric:build"//, ":forge:build"
//finalizedBy ":forge:signJar"
dependsOn ":common:jar", ":fabric:build", ":forge:build"
finalizedBy ":forge:signJar"

duplicatesStrategy = DuplicatesStrategy.EXCLUDE
from zipTree("common/build/libs/common-${project.version}.jar"),
Expand Down
37 changes: 23 additions & 14 deletions forge/build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
import net.minecraftforge.gradle.common.task.SignJar
import net.minecraftforge.gradle.common.tasks.SignJar

buildscript {
repositories {
maven {
name = "forge"
url = "https://maven.minecraftforge.net"
}
jcenter()
mavenCentral()
}
dependencies {
Expand All @@ -21,19 +20,34 @@ minecraft {
runs {
client {
workingDirectory project.file("../run")
property "forge.logging.markers", "REGISTRIES"
property "forge.logging.console.level", "debug"
mods {
fallingtree {
editsign {
source sourceSets.main
}
}
}

server {
workingDirectory project.file('../run')
workingDirectory project.file("../run")
property "forge.logging.markers", "REGISTRIES"
property "forge.logging.console.level", "debug"
mods {
editsign {
source sourceSets.main
}
}
}

data {
workingDirectory project.file("../run")
property "forge.logging.markers", "REGISTRIES"
property "forge.logging.console.level", "debug"
args '--mod', 'editsign', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')

mods {
fallingtree {
editsign {
source sourceSets.main
}
}
Expand All @@ -42,20 +56,15 @@ minecraft {
}

dependencies {
minecraft("net.minecraftforge:forge:${forge_version}")
minecraft(libs.forge)
implementation project(":common")

implementation(fg.deobf("me.shedaniel.cloth:cloth-config-forge:${cloth_config_version}"))
}

repositories {
maven {
name = "Cloth Config"
url = "https://maven.shedaniel.me/"
}
// implementation(fg.deobf("me.shedaniel.cloth:cloth-config-forge:4.11.26"))
}

processResources {
duplicatesStrategy = DuplicatesStrategy.INCLUDE

from "src/main/resources", "../common/src/main/resources"

filesMatching("META-INF/mods.toml") {
Expand Down
11 changes: 6 additions & 5 deletions forge/src/main/java/fr/raksrinana/editsign/forge/EditSign.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,30 @@

import fr.raksrinana.editsign.forge.config.Config;
import fr.raksrinana.editsign.forge.config.cloth.ClothConfigHook;
import net.minecraftforge.fml.ExtensionPoint;
import net.minecraftforge.fml.IExtensionPoint.DisplayTest;
import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.network.FMLNetworkConstants;
import org.apache.commons.lang3.tuple.Pair;
import net.minecraftforge.fmllegacy.network.FMLNetworkConstants;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.lang.reflect.InvocationTargetException;

@Mod(EditSign.MOD_ID)
public class EditSign{
public static final String MOD_ID = "editsign";
public static final Logger LOGGER = LogManager.getLogger(MOD_ID);

public EditSign() throws ClassNotFoundException, IllegalAccessException, InstantiationException{
ModLoadingContext.get().registerExtensionPoint(ExtensionPoint.DISPLAYTEST, () -> Pair.of(() -> FMLNetworkConstants.IGNORESERVERONLY, (a, b) -> true));
public EditSign() throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException{
ModLoadingContext.get().registerExtensionPoint(DisplayTest.class, () -> new DisplayTest(() -> FMLNetworkConstants.IGNORESERVERONLY, (a, b) -> true));
ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, Config.COMMON_SPEC);

if(ModList.get().isLoaded("cloth-config"))
{
Class.forName("fr.raksrinana.editsign.forge.config.cloth.ClothConfigHook")
.asSubclass(ClothConfigHook.class)
.getConstructor()
.newInstance()
.load();
}
Expand Down
30 changes: 15 additions & 15 deletions forge/src/main/java/fr/raksrinana/editsign/forge/EditSignUtils.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package fr.raksrinana.editsign.forge;

import fr.raksrinana.editsign.forge.config.Config;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.DyeItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tags.ITag;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.ItemTags;
import net.minecraft.util.ResourceLocation;
import net.minecraft.tags.Tag;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.DyeItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import javax.annotation.Nonnull;
import java.util.Collection;
import java.util.Objects;
Expand All @@ -19,21 +19,21 @@
import static net.minecraftforge.registries.ForgeRegistries.ITEMS;

public class EditSignUtils{
public static boolean canPlayerEdit(PlayerEntity playerEntity, ItemStack itemStack){
return playerEntity.mayBuild() && !playerEntity.isCrouching() && !isHoldingDye(itemStack) && hasRightItem(itemStack);
public static boolean canPlayerEdit(Player player, ItemStack itemStack){
return player.mayBuild() && !player.isCrouching() && !isHoldingDye(itemStack) && hasRightItem(itemStack);
}

private static boolean isHoldingDye(ItemStack itemStack){
return itemStack.getItem() instanceof DyeItem;
}

private static boolean hasRightItem(ItemStack itemStack){
Collection<Item> requiredItem = Config.COMMON.getRequiredItem();
var requiredItem = Config.COMMON.getRequiredItem();
if(requiredItem.isEmpty()){
return true;
}

Item playerItem = itemStack.getItem();
var playerItem = itemStack.getItem();
return requiredItem.stream().anyMatch(item -> item.equals(playerItem));
}

Expand All @@ -49,16 +49,16 @@ public static Set<Item> getAsItems(String name){
@Nonnull
public static Stream<Item> getItem(String name){
try{
boolean isTag = name.startsWith("#");
var isTag = name.startsWith("#");
if(isTag){
name = name.substring(1);
}
ResourceLocation resourceLocation = new ResourceLocation(name);
var resourceLocation = new ResourceLocation(name);
if(isTag){
return Optional.ofNullable(ItemTags.getAllTags().getTag(resourceLocation))
.map(ITag::getValues)
.map(Collection::stream)
.orElse(empty());
.map(Tag::getValues)
.stream()
.flatMap(Collection::stream);
}
return Stream.of(ITEMS.getValue(resourceLocation));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,46 +1,43 @@
package fr.raksrinana.editsign.forge;

import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.tileentity.SignTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Util;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.Util;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.world.level.block.entity.SignBlockEntity;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
import net.minecraftforge.fml.util.ObfuscationReflectionHelper;
import static fr.raksrinana.editsign.forge.EditSignUtils.canPlayerEdit;

@Mod.EventBusSubscriber(modid = EditSign.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE)
public final class ForgeEventSubscriber{
private static final String[] IS_EDITABLE_FIELDS = {
"field_145916_j",
"f_59721_",
"isEditable",
};

@SubscribeEvent(priority = EventPriority.LOWEST)
public static void onRightClickBlock(PlayerInteractEvent.RightClickBlock event){
PlayerEntity player = event.getPlayer();
var player = event.getPlayer();
if(canPlayerEdit(player, event.getItemStack())){
TileEntity tileentity = event.getWorld().getBlockEntity(event.getPos());
if(tileentity instanceof SignTileEntity){
SignTileEntity sign = (SignTileEntity) tileentity;
var blockEntity = event.getWorld().getBlockEntity(event.getPos());
if(blockEntity instanceof SignBlockEntity sign){
setSignEditable(sign);
if(sign.isEditable()){
player.openTextEdit(sign);
}
else{
player.sendMessage(new TranslationTextComponent(EditSign.MOD_ID + ".action.not_editable"), Util.NIL_UUID);
player.sendMessage(new TranslatableComponent(EditSign.MOD_ID + ".action.not_editable"), Util.NIL_UUID);
}
}
}
}

private static void setSignEditable(SignTileEntity sign){
for(String field : IS_EDITABLE_FIELDS){
private static void setSignEditable(SignBlockEntity sign){
for(var field : IS_EDITABLE_FIELDS){
try{
ObfuscationReflectionHelper.setPrivateValue(SignTileEntity.class, sign, true, field);
ObfuscationReflectionHelper.setPrivateValue(SignBlockEntity.class, sign, true, field);
return;
}
catch(ObfuscationReflectionHelper.UnableToFindFieldException e){
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package fr.raksrinana.editsign.forge.config;

import net.minecraft.item.Item;
import net.minecraft.world.item.Item;
import net.minecraftforge.common.ForgeConfigSpec;
import java.util.Collection;
import static fr.raksrinana.editsign.forge.EditSignUtils.getAsItems;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,14 @@
import fr.raksrinana.editsign.forge.EditSign;
import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.fml.common.Mod;
import org.apache.commons.lang3.tuple.Pair;

@Mod.EventBusSubscriber(modid = EditSign.MOD_ID)
public class Config{
public static final CommonConfig COMMON;
public static final ForgeConfigSpec COMMON_SPEC;

static{
Pair<CommonConfig, ForgeConfigSpec> commonPair = new ForgeConfigSpec.Builder().configure(CommonConfig::new);
var commonPair = new ForgeConfigSpec.Builder().configure(CommonConfig::new);
COMMON = commonPair.getLeft();
COMMON_SPEC = commonPair.getRight();
}
Expand Down
Loading

0 comments on commit 7c72200

Please sign in to comment.