Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1.6.4 partial support #170

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
c09fd3d
Update to Loom and Legacy-Looming 1.6
thecatcore May 4, 2024
944f0fb
Add 1.6.4 submodule
thecatcore May 4, 2024
e66630a
Fix json translation files not being parsed correctly in some versions
thecatcore May 4, 2024
9715566
Add resource-loader support for 1.6.4
thecatcore May 4, 2024
e1fd2a8
Fix version requirement being wrong or missing for some modules
thecatcore May 4, 2024
9d7f021
Fix tested modules table in readme
thecatcore May 4, 2024
a3186b0
Port lifecycle module to 1.6.4
thecatcore May 4, 2024
028d1a0
Port keybindings module to 1.6.4
thecatcore May 4, 2024
a4b7195
Add testmod to command api v1
thecatcore May 4, 2024
9fd9e56
fix some test mod modid
thecatcore May 4, 2024
16d50f3
Port permission api module to 1.6.4
thecatcore May 5, 2024
da5a3a9
Barebone port of command api v2 (sponge) to 1.6.4
thecatcore May 5, 2024
653ed47
Small tweaks
thecatcore May 5, 2024
880d8ec
networking api will probably require a rewrite later to support pre-1.7
thecatcore May 5, 2024
9170d75
Add 1.6.4 to supported version range
thecatcore May 5, 2024
f96b8da
Port Item Group module to 1.6.4
thecatcore May 9, 2024
19b5d09
Item group lang files already exist in common module
thecatcore May 9, 2024
24f31ff
Improve command-api-v1 testmod
thecatcore May 9, 2024
85719be
Fix style
thecatcore May 9, 2024
4d4f2ee
Remove command-api-v2 port for now to be redone later
thecatcore May 9, 2024
3c1a071
Bump modules versions
thecatcore May 9, 2024
df20342
Update README
thecatcore May 9, 2024
3ccda76
Update mod description
thecatcore May 9, 2024
b887dcc
Merge branch 'main' into feature/1.6.4-partial-support
thecatcore May 9, 2024
26e9a5b
Merge branch 'refs/heads/main' into feature/1.6.4-partial-support
thecatcore May 19, 2024
2ce7a52
Clean up unnecessary code in permission-api-v1
thecatcore Jun 27, 2024
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
40 changes: 20 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,25 @@ Fabric API is the library for essential hooks and interoperability mechanisms fo
For support, consider joining the [Legacy Fabric discord server](https://legacyfabric.net/discord) or opening an issue.

## Modules available and tested by minecraft version
✅ = Working as expected\
✅ = Working as expected.\
⚠ = Working but has some issues.\
? = Not sure if it was tested or working correctly\
❌ = Not working at all, likely crashing
? = Not tested, might not work as intended.\
❌ = Not ported or probably not working.

| | 1.7.10 | 1.8 | 1.8.9 | 1.9.4 | 1.10.2 | 1.11.2 | 1.12.2 | 1.13.2 |
|----------------------|--------|-----|-------|-------|--------|--------|--------|--------|
| api-base | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| command-api-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| command-api-v2 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| crash-report-info-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| entity-events-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| gamerule-api-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? |
| item-groups-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| keybindings-api-v1 | ⚠ #132 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| lifecycle-events-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| logger-api-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| networking-api-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| permissions-api-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| registry-sync-api-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| rendering-api-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| resource-loader-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| | 1.6.4 | 1.7.10 | 1.8 | 1.8.9 | 1.9.4 | 1.10.2 | 1.11.2 | 1.12.2 | 1.13.2 |
|----------------------|-------------------------------|--------|-----|-------|-------|--------|--------|--------|--------|
| api-base | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| command-api-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| command-api-v2 | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| crash-report-info-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| entity-events-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| gamerule-api-v1 | ? | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ? |
| item-groups-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| keybindings-api-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| lifecycle-events-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| logger-api-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| networking-api-v1 | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| permissions-api-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| registry-sync-api-v1 | ❌ (Depends on networking-api) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| rendering-api-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| resource-loader-v1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
3 changes: 2 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ def supportedVersions = [
"1.9.4",
"1.8.9",
"1.8",
"1.7.10"
"1.7.10",
"1.6.4"
]
def supportedRanges = [
// ["1.8", "1.8.9", false] // third parameter is whether or not to include snapshots in the range.
Expand Down
14 changes: 7 additions & 7 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@ yarn_mappings_build = 530

## Module versions
legacy-fabric-api-base.version = 1.1.0
legacy-fabric-command-api-v1.version = 1.0.0
legacy-fabric-command-api-v1.version = 1.0.1
legacy-fabric-command-api-v2.version = 1.0.2
legacy-fabric-crash-report-info-v1.version = 1.0.0
legacy-fabric-entity-events-v1.version = 1.0.0
legacy-fabric-gamerule-api-v1.version = 1.0.0
legacy-fabric-item-groups-v1.version = 2.0.0
legacy-fabric-keybindings-api-v1.version = 1.0.1
legacy-fabric-lifecycle-events-v1.version = 1.0.1
legacy-fabric-item-groups-v1.version = 2.1.0
legacy-fabric-keybindings-api-v1.version = 1.0.2
legacy-fabric-lifecycle-events-v1.version = 1.1.0
legacy-fabric-logger-api-v1.version = 1.0.4
legacy-fabric-networking-api-v1.version = 2.0.1
legacy-fabric-permissions-api-v1.version = 1.0.1
legacy-fabric-networking-api-v1.version = 2.0.2
legacy-fabric-permissions-api-v1.version = 1.1.0
legacy-fabric-registry-sync-api-v1.version = 2.2.0
legacy-fabric-rendering-api-v1.version = 1.0.0
legacy-fabric-resource-loader-v1.version = 2.1.1
legacy-fabric-resource-loader-v1.version = 2.2.0
1 change: 1 addition & 0 deletions legacy-fabric-command-api-v1/common/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
minVersionIncluded=1.3
maxVersionIncluded=1.12.2
artifactSuffix=
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@
],
"description": "Adds command-related hooks.",
"depends": {
"minecraft": "${minecraft_version}"
"minecraft": "${minecraft_version}",
"legacy-fabric-lifecycle-events-v1-common": "*"
},
"custom": {
"modmenu": {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* Copyright (c) 2020 - 2024 Legacy Fabric
* Copyright (c) 2016 - 2022 FabricMC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package net.legacyfabric.fabric.test.command;

import net.fabricmc.api.ModInitializer;

import net.legacyfabric.fabric.api.logger.v1.Logger;
import net.legacyfabric.fabric.api.registry.CommandRegistry;

public class CommandV1Test implements ModInitializer {
public static final Logger LOGGER = Logger.get("LegacyFabricAPI", "Test", "CommandV1Test");

@Override
public void onInitialize() {
CommandRegistry.INSTANCE.register(new ModMetadataCommandV1());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/*
* Copyright (c) 2020 - 2024 Legacy Fabric
* Copyright (c) 2016 - 2022 FabricMC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package net.legacyfabric.fabric.test.command;

import java.util.Optional;

import net.minecraft.command.AbstractCommand;
import net.minecraft.command.CommandException;
import net.minecraft.command.CommandSource;

import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.ModContainer;
import net.fabricmc.loader.api.metadata.ContactInformation;

public class ModMetadataCommandV1 extends AbstractCommand {
@Override
public String getCommandName() {
return "modmetadatav1";
}

@Override
public String getUsageTranslationKey(CommandSource source) {
return "modmetadatav1";
}

@Override
public void execute(CommandSource source, String[] args) throws CommandException {
if (args.length > 0) {
thecatcore marked this conversation as resolved.
Show resolved Hide resolved
Optional<ModContainer> optionalModContainer = FabricLoader.getInstance().getModContainer(args[0]);

if (optionalModContainer.isPresent()) {
ModContainer container = optionalModContainer.get();

StringBuilder builder = new StringBuilder();
builder.append("Mod Name: ".concat(container.getMetadata().getName()).concat("\n"));
builder.append("Description: ".concat(container.getMetadata().getDescription()).concat("\n"));
ContactInformation contact = container.getMetadata().getContact();

if (contact.get("issues").isPresent()) {
StringBuilder issueText = new StringBuilder("");
issueText.append("Issues: ");
StringBuilder issueUrl = new StringBuilder(contact.get("issues").get());
issueText.append(issueUrl);
issueText.append("\n");
builder.append(issueText);
}

if (contact.get("sources").isPresent()) {
StringBuilder sourcesText = new StringBuilder("");
sourcesText.append("Sources: ");
StringBuilder sourcesUrl = new StringBuilder(contact.get("sources").get());
sourcesText.append(sourcesUrl);
sourcesText.append("\n");
builder.append(sourcesText);
}

builder.append("Metadata Type: ".concat(container.getMetadata().getType()).concat("\n"));
CommandV1Test.LOGGER.info(builder.toString());
} else {
CommandV1Test.LOGGER.error("Couldn't find Mod container for mod id '" + args[0] + "'");
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"schemaVersion": 1,
"id": "legacy-fabric-command-api-v1-testmod",
"description": "Tests for api features",
"version": "1.0.0",
"entrypoints": {
"main": [
"net.legacyfabric.fabric.test.command.CommandV1Test"
]
},
"depends": {
"minecraft": "${minecraft_version}"
}
}
2 changes: 1 addition & 1 deletion legacy-fabric-command-api-v2/1.7.10/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
minVersionIncluded=1.3
minVersionIncluded=1.7.10
maxVersionIncluded=1.7.10
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Copyright (c) 2020 - 2024 Legacy Fabric
* Copyright (c) 2016 - 2022 FabricMC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package net.legacyfabric.fabric.mixin.item.group.client;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;

import net.minecraft.client.gui.screen.Screen;

import net.legacyfabric.fabric.impl.item.group.ScreenAccessor;

@Mixin(Screen.class)
public abstract class MixinScreen implements ScreenAccessor {
@Shadow
public abstract void renderTooltip(String text, int x, int y);

@Override
public void callRenderTooltip(String text, int x, int y) {
this.renderTooltip(text, x, y);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"ItemGroupMixin"
],
"client": [
"client.MixinScreen"
],
"injectors": {
"defaultRequire": 1
Expand Down
Empty file.
2 changes: 2 additions & 0 deletions legacy-fabric-item-groups-v1/1.6.4/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
minVersionIncluded=1.3
maxVersionIncluded=1.6.4
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/*
* Copyright (c) 2020 - 2024 Legacy Fabric
* Copyright (c) 2016 - 2022 FabricMC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package net.legacyfabric.fabric.impl.item.group;

import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Supplier;

import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.itemgroup.ItemGroup;

import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;

public class FabricItemGroup extends ItemGroup {
private final Supplier<ItemStack> itemSupplier;
private final BiConsumer<List<ItemStack>, ItemGroup> stacksForDisplay;

public FabricItemGroup(int index, String id, Supplier<ItemStack> itemSupplier, BiConsumer<List<ItemStack>, ItemGroup> stacksForDisplay) {
super(index, id);
this.itemSupplier = itemSupplier;
this.stacksForDisplay = stacksForDisplay;
}

@Override
@Environment(EnvType.CLIENT)
public Item method_3320() {
return this.itemSupplier.get().getItem();
}

@Override
@Environment(EnvType.CLIENT)
public void showItems(List stacks) {
if (stacksForDisplay != null) {
stacksForDisplay.accept(stacks, this);
return;
}

super.showItems(stacks);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Copyright (c) 2020 - 2024 Legacy Fabric
* Copyright (c) 2016 - 2022 FabricMC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package net.legacyfabric.fabric.mixin.item.group;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

import net.minecraft.item.itemgroup.ItemGroup;

import net.legacyfabric.fabric.impl.item.group.FabricCreativeGuiComponents;
import net.legacyfabric.fabric.impl.item.group.FabricItemGroup;

@Mixin(ItemGroup.class)
public class ItemGroupMixin {
@Inject(method = "<clinit>", at = @At("RETURN"))
private static void classInit(CallbackInfo ci) {
FabricCreativeGuiComponents.ITEM_GROUP_CREATOR = FabricItemGroup::new;
}
}
Loading
Loading