Compare commits

..

No commits in common. "43a23883e3f35e6dc60e3856c6effb4cd6d7763a" and "268cf651d0c6c56278e73b5f7af73096f2927b4b" have entirely different histories.

9 changed files with 208 additions and 105 deletions

View file

@ -1 +0,0 @@
// 1.21.1 2024-10-22T19:46:05.5548254 Update structure files in /structure

View file

@ -1,6 +1,5 @@
package de.ellpeck.actuallyadditions.data; package de.ellpeck.actuallyadditions.data;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI;
import de.ellpeck.actuallyadditions.data.patchouli.PatchouliGenerator; import de.ellpeck.actuallyadditions.data.patchouli.PatchouliGenerator;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions; import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import de.ellpeck.actuallyadditions.mod.gen.ActuallyBiomeModifiers; import de.ellpeck.actuallyadditions.mod.gen.ActuallyBiomeModifiers;
@ -73,7 +72,6 @@ public class ActuallyAdditionsData {
generator.addProvider(event.includeServer(), new DatapackBuiltinEntriesProvider( generator.addProvider(event.includeServer(), new DatapackBuiltinEntriesProvider(
packOutput, patchedProvider, Set.of(ActuallyAdditions.MODID))); packOutput, patchedProvider, Set.of(ActuallyAdditions.MODID)));
generator.addProvider(true, new StructureUpdater("structure", ActuallyAdditionsAPI.MOD_ID, helper, packOutput));
generator.addProvider(true, new Curios(packOutput, helper, lookupProvider)); generator.addProvider(true, new Curios(packOutput, helper, lookupProvider));
} }

View file

@ -1,102 +0,0 @@
package de.ellpeck.actuallyadditions.data;
/*
* BluSunrize
* Copyright (c) 2021
*
* This code is licensed under "Blu's License of Common Sense".
* Class written by malte0811 and BluSunrize, and used with malte's permission.
*/
import com.google.common.hash.Hashing;
import com.mojang.datafixers.DataFixer;
import com.mojang.datafixers.DataFixerUpper;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.data.CachedOutput;
import net.minecraft.data.DataProvider;
import net.minecraft.data.PackOutput;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtAccounter;
import net.minecraft.nbt.NbtIo;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.resources.MultiPackResourceManager;
import net.minecraft.server.packs.resources.Resource;
import net.minecraft.util.datafix.DataFixTypes;
import net.minecraft.util.datafix.DataFixers;
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate;
import net.neoforged.neoforge.common.data.ExistingFileHelper;
import javax.annotation.Nonnull;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.lang.reflect.Field;
import java.nio.file.Path;
import java.util.concurrent.CompletableFuture;
public class StructureUpdater implements DataProvider {
private final String basePath;
private final String modid;
private final PackOutput output;
private final MultiPackResourceManager resources;
public StructureUpdater(
String basePath, String modid, ExistingFileHelper helper, PackOutput output
) {
this.basePath = basePath;
this.modid = modid;
this.output = output;
try {
Field serverData = ExistingFileHelper.class.getDeclaredField("serverData");
serverData.setAccessible(true);
resources = (MultiPackResourceManager) serverData.get(helper);
} catch (NoSuchFieldException | IllegalAccessException e) {
throw new RuntimeException(e);
}
}
@Override
public CompletableFuture<?> run(@Nonnull CachedOutput cache) {
try {
for (var entry : resources.listResources(basePath, $ -> true).entrySet())
if (entry.getKey().getNamespace().equals(modid))
process(entry.getKey(), entry.getValue(), cache);
return CompletableFuture.completedFuture(null);
} catch (IOException x) {
return CompletableFuture.failedFuture(x);
}
}
private void process(ResourceLocation loc, Resource resource, CachedOutput cache) throws IOException {
CompoundTag inputNBT = NbtIo.readCompressed(resource.open(), NbtAccounter.unlimitedHeap());
CompoundTag converted = updateNBT(inputNBT);
if (!converted.equals(inputNBT)) {
Class<? extends DataFixer> fixerClass = DataFixers.getDataFixer().getClass();
if (!fixerClass.equals(DataFixerUpper.class))
throw new RuntimeException("Structures are not up to date, but unknown data fixer is in use: " + fixerClass.getName());
writeNBTTo(loc, converted, cache);
}
}
private void writeNBTTo(ResourceLocation loc, CompoundTag data, CachedOutput cache) throws IOException {
ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream();
NbtIo.writeCompressed(data, bytearrayoutputstream);
byte[] bytes = bytearrayoutputstream.toByteArray();
Path outputPath = output.getOutputFolder().resolve("data/" + loc.getNamespace() + "/" + loc.getPath());
cache.writeIfNeeded(outputPath, bytes, Hashing.sha1().hashBytes(bytes));
}
private static CompoundTag updateNBT(CompoundTag nbt) {
final CompoundTag updatedNBT = DataFixTypes.STRUCTURE.updateToCurrentVersion(
DataFixers.getDataFixer(), nbt, nbt.getInt("DataVersion")
);
StructureTemplate template = new StructureTemplate();
template.load(BuiltInRegistries.BLOCK.asLookup(), updatedNBT);
return template.save(new CompoundTag());
}
@Nonnull
@Override
public String getName() {
return "Update structure files in /" + basePath + "/";
}
}

View file

@ -67,6 +67,8 @@ public class ActuallyAdditions {
public static final String NAME = "Actually Additions"; public static final String NAME = "Actually Additions";
@Deprecated @Deprecated
public static final String VERSION = "@VERSION@"; public static final String VERSION = "@VERSION@";
@Deprecated
public static final String GUIFACTORY = "de.ellpeck.actuallyadditions.mod.config.GuiFactory";
public static final String DEPS = "required:forge@[14.23.5.2836,);before:craftingtweaks;after:fastbench@[1.3.2,)"; public static final String DEPS = "required:forge@[14.23.5.2836,);before:craftingtweaks;after:fastbench@[1.3.2,)";
public static final Logger LOGGER = LoggerFactory.getLogger(MODID); public static final Logger LOGGER = LoggerFactory.getLogger(MODID);

View file

@ -0,0 +1,41 @@
// TODO: [port][note] forge does not support this atm
///*
// * This file ("GuiFactory.java") is part of the Actually Additions mod for Minecraft.
// * It is created and owned by Ellpeck and distributed
// * under the Actually Additions License to be found at
// * http://ellpeck.de/actaddlicense
// * View the source code at https://github.com/Ellpeck/ActuallyAdditions
// *
// * © 2015-2017 Ellpeck
// */
//
//package de.ellpeck.actuallyadditions.mod.config;
//
//import java.util.Set;
//
//import net.minecraft.client.Minecraft;
//import net.minecraft.client.gui.GuiScreen;
//import net.minecraftforge.fml.client.IModGuiFactory;
//
//public class GuiFactory implements IModGuiFactory {
//
// @Override
// public void initialize(Minecraft minecraftInstance) {
//
// }
//
// @Override
// public boolean hasConfigGui() {
// return true;
// }
//
// @Override
// public GuiScreen createConfigGui(GuiScreen parentScreen) {
// return new GuiConfiguration(parentScreen);
// }
//
// @Override
// public Set<RuntimeOptionCategoryElement> runtimeGuiCategories() {
// return null;
// }
//}

View file

@ -0,0 +1,84 @@
package de.ellpeck.actuallyadditions.mod.inventory.gui;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import de.ellpeck.actuallyadditions.mod.util.AssetUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Button;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import javax.annotation.Nonnull;
@Deprecated(forRemoval = true) //Unused because vanilla's Button class can render small just fine and even allows text scrolling
public class Buttons {
@Deprecated(forRemoval = true) //Vanilla's Button class can render small just fine and even allows text scrolling
public static class SmallerButton extends Button {
public final ResourceLocation resLoc = AssetUtil.getGuiLocation("gui_inputter");
private final boolean smaller;
public SmallerButton(int x, int y, Component display, OnPress pressable) {
this(x, y, display, false, pressable);
}
public SmallerButton(int x, int y, Component display, boolean smaller, OnPress pressable) {
super(x, y, 16, smaller
? 12
: 16, display, pressable, DEFAULT_NARRATION);
this.smaller = smaller;
}
@Override
public void renderWidget(@Nonnull GuiGraphics guiGraphics, int mouseX, int mouseY, float f) {
if (this.visible) {
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
int k = !this.active ? 0 : (this.isHoveredOrFocused() ? 2 : 1);
GlStateManager._enableBlend();
GlStateManager.glBlendFuncSeparate(770, 771, 1, 0);
GlStateManager._blendFunc(770, 771);
guiGraphics.blit(this.resLoc, this.getX(), this.getY(), this.smaller
? 200
: 176, k * this.height, this.width, this.height);
//this.mouseDragged(mc, x, y); // The heck was this doing here?
int color = 14737632;
if (this.packedFGColor != 0) {
color = this.packedFGColor;
} else if (!this.active) {
color = 10526880;
} else if (this.isHovered) {
color = 16777120;
}
guiGraphics.drawCenteredString(Minecraft.getInstance().font, this.getMessage(), this.getX() + this.width / 2, this.getY() + (this.height - 8) / 2, this.getMessage().getStyle().getColor().getValue());
}
}
}
public static class TinyButton extends Button {
public final ResourceLocation resLoc = AssetUtil.getGuiLocation("gui_inputter");
public TinyButton(int id, int x, int y) {
super(x, y, 8, 8, Component.literal(""), Button::onPress, DEFAULT_NARRATION);
}
@Override
public void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float f) {
if (this.visible) {
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
int k = !this.active ? 0 : (this.isHoveredOrFocused() ? 2 : 1);
GlStateManager._enableBlend();
GlStateManager.glBlendFuncSeparate(770, 771, 1, 0);
GlStateManager._blendFunc(770, 771);
guiGraphics.blit(this.resLoc, this.getX(), this.getY(), 192, k * 8, 8, 8);
//this.mouseDragged(mc, x, y);
}
}
}
}

View file

@ -0,0 +1,75 @@
/*
* This file ("InitOreDict.java") is part of the Actually Additions mod for Minecraft.
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http://ellpeck.de/actaddlicense
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
*
* © 2015-2017 Ellpeck
*/
package de.ellpeck.actuallyadditions.mod.ore;
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Block;
// TODO: [port][change] migrate to TAGS
@Deprecated
public final class InitOreDict {
public static void init() {
ActuallyAdditions.LOGGER.info("Initializing OreDictionary Entries...");
//Vanilla Ores
addOre(Items.COAL, "coal");
//Ores for Pulverizers etc.
// addOre(InitItems.itemDust.get(), TheDusts.IRON.ordinal(), "dustIron");
// addOre(InitItems.itemDust.get(), TheDusts.GOLD.ordinal(), "dustGold");
// addOre(InitItems.itemDust.get(), TheDusts.DIAMOND.ordinal(), "dustDiamond");
// addOre(InitItems.itemDust.get(), TheDusts.EMERALD.ordinal(), "dustEmerald");
// addOre(InitItems.itemDust.get(), TheDusts.LAPIS.ordinal(), "dustLapis");
// addOre(InitItems.itemDust.get(), TheDusts.QUARTZ.ordinal(), "dustQuartz");
// addOre(InitItems.itemDust.get(), TheDusts.QUARTZ.ordinal(), "dustNetherQuartz");
// addOre(InitItems.itemDust.get(), TheDusts.COAL.ordinal(), "dustCoal");
// addOre(InitItems.itemDust.get(), TheDusts.QUARTZ_BLACK.ordinal(), "dustQuartzBlack");
// addOre(ActuallyBlocks.blockMisc.get(), TheMiscBlocks.ORE_QUARTZ.ordinal(), "oreQuartzBlack");
// addOre(InitItems.itemMisc.get(), TheMiscItems.QUARTZ.ordinal(), "gemQuartzBlack");
//
// //For Thermal Expansion Machine that "grows crops"
// addOre(InitItems.itemCanolaSeed.get(), "seedCanola");
// addOre(InitItems.itemMisc.get(), TheMiscItems.CANOLA.ordinal(), "cropCanola");
// addOre(InitItems.itemRiceSeed.get(), "seedRice");
// addOre(InitItems.itemFoods.get(), TheFoods.RICE.ordinal(), "cropRice");
// addOre(InitItems.itemFlaxSeed.get(), "seedFlax");
// addOre(Items.STRING, "cropFlax");
// addOre(InitItems.itemCoffeeSeed.get(), "seedCoffee");
// addOre(InitItems.itemCoffeeBean.get(), "cropCoffee");
//
// //For Crafting
// addOre(InitItems.itemMisc.get(), TheMiscItems.RICE_SLIME.ordinal(), "slimeball");
// addOre(ActuallyBlocks.blockMisc.get(), TheMiscBlocks.CHARCOAL_BLOCK.ordinal(), "blockCharcoal");
// addOre(ActuallyBlocks.blockMisc.get(), TheMiscBlocks.QUARTZ.ordinal(), "blockQuartzBlack");
// addOre(InitItems.itemMisc.get(), TheMiscItems.BLACK_DYE.ordinal(), "dyeBlack");
// addOre(InitItems.itemMisc.get(), TheMiscItems.BLACK_DYE.ordinal(), "dye");
}
private static void addOre(Item item, int meta, String name) {
// addOre(new ItemStack(item, 1, meta), name);
}
private static void addOre(Item item, String name) {
// addOre(item, 0, name);
}
private static void addOre(Block block, int meta, String name) {
// addOre(new ItemStack(block, 1, meta), name);
}
private static void addOre(ItemStack stack, String name) {
// OreDictionary.registerOre(name, stack);
}
}

View file

@ -18,6 +18,12 @@ import net.neoforged.fml.loading.FMLLoader;
public final class Util { public final class Util {
@Deprecated
public static final int WILDCARD = Short.MAX_VALUE;//OreDictionary.WILDCARD_VALUE;
@Deprecated
public static final int BUCKET = 1000;
public static boolean isDevVersion() { public static boolean isDevVersion() {
return ActuallyAdditions.VERSION.equals("@VERSION@"); return ActuallyAdditions.VERSION.equals("@VERSION@");
} }