1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2025-12-02 20:38:05 +00:00

Add small fixes and update forge test mod

This commit is contained in:
SirEdvin
2023-06-27 15:47:08 +03:00
parent fa58f85e03
commit de6b097f5b
5 changed files with 43 additions and 16 deletions

View File

@@ -10,8 +10,8 @@ import dan200.computercraft.api.turtle.ITurtleAccess;
import dan200.computercraft.api.turtle.ITurtleUpgrade;
import dan200.computercraft.api.turtle.TurtleSide;
import dan200.computercraft.api.turtle.TurtleUpgradeSerialiser;
import dan200.computercraft.api.upgrades.UpgradeData;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.resources.ResourceLocation;
import javax.annotation.Nonnull;
@@ -43,12 +43,13 @@ public interface TurtleUpgradeModeller<T extends ITurtleUpgrade> {
* Used when turtle access object doesn't exist. For compatibility reasons, by default this method call getModel
* that depend on turtle.
*
* @param upgrade The upgrade that you're getting the model for.
* @param data Upgrade data instance for current turtle side
* @param side Which side of the turtle (left or right) the upgrade resides on.
* @return The model that you wish to be used to render your upgrade.
*/
default TransformedModel getModel(@Nonnull UpgradeData<T> data, TurtleSide side) {
return getModel(data.upgrade(), null, side);
default TransformedModel getModel(@Nonnull T upgrade, @Nonnull CompoundTag data, TurtleSide side) {
return getModel(upgrade, (ITurtleAccess) null, side);
}
/**

View File

@@ -99,11 +99,11 @@ public final class TurtleModelParts {
parts.add(transform(ClientPlatformHelper.get().getModel(modelManager, overlayModelLocation), transformation));
}
if (combo.leftUpgrade() != null) {
var model = TurtleUpgradeModellers.getModel(combo.leftUpgrade(), TurtleSide.LEFT);
var model = TurtleUpgradeModellers.getModel(combo.leftUpgrade().upgrade(), combo.leftUpgrade().data(), TurtleSide.LEFT);
parts.add(transform(model.getModel(), transformation.compose(model.getMatrix())));
}
if (combo.rightUpgrade() != null) {
var model = TurtleUpgradeModellers.getModel(combo.rightUpgrade(), TurtleSide.RIGHT);
var model = TurtleUpgradeModellers.getModel(combo.rightUpgrade().upgrade(), combo.rightUpgrade().data(), TurtleSide.RIGHT);
parts.add(transform(model.getModel(), transformation.compose(model.getMatrix())));
}

View File

@@ -15,6 +15,7 @@ import dan200.computercraft.api.upgrades.UpgradeData;
import dan200.computercraft.impl.TurtleUpgrades;
import dan200.computercraft.impl.UpgradeManager;
import net.minecraft.client.Minecraft;
import net.minecraft.nbt.CompoundTag;
import javax.annotation.Nonnull;
import java.util.Map;
@@ -59,10 +60,10 @@ public final class TurtleUpgradeModellers {
return modeller.getModel(upgrade, access, side);
}
public static TransformedModel getModel(@Nonnull UpgradeData<ITurtleUpgrade> data, TurtleSide side) {
public static TransformedModel getModel(@Nonnull ITurtleUpgrade upgrade, @Nonnull CompoundTag data, TurtleSide side) {
@SuppressWarnings("unchecked")
var modeller = (TurtleUpgradeModeller<ITurtleUpgrade>) modelCache.computeIfAbsent(data.upgrade(), TurtleUpgradeModellers::getModeller);
return modeller.getModel(data, side);
var modeller = (TurtleUpgradeModeller<ITurtleUpgrade>) modelCache.computeIfAbsent(upgrade, TurtleUpgradeModellers::getModeller);
return modeller.getModel(upgrade, data, side);
}
private static TurtleUpgradeModeller<?> getModeller(ITurtleUpgrade upgradeA) {

View File

@@ -62,13 +62,10 @@ public class PocketAPI implements ILuaAPI {
// Attempt to find the upgrade, starting in the main segment, and then looking in the opposite
// one. We start from the position the item is currently in and loop round to the start.
var newUpgradeItem = findUpgrade(inventory.items, inventory.selected, previousUpgrade);
if (newUpgradeItem == null) {
newUpgradeItem = findUpgrade(inventory.offhand, 0, previousUpgrade);
var newUpgrade = findUpgrade(inventory.items, inventory.selected, previousUpgrade);
if (newUpgrade == null) {
newUpgrade = findUpgrade(inventory.offhand, 0, previousUpgrade);
}
if (newUpgradeItem == null) return new Object[]{ false, "Cannot find a valid upgrade" };
// Unpack new upgrade here and ensure some mystical error is not happened
var newUpgrade = PocketUpgrades.instance().get(newUpgradeItem);
if (newUpgrade == null) return new Object[]{ false, "Cannot find a valid upgrade" };
// Remove the current upgrade
@@ -109,7 +106,7 @@ public class PocketAPI implements ILuaAPI {
}
}
private static @Nullable ItemStack findUpgrade(NonNullList<ItemStack> inv, int start, @Nullable UpgradeData<IPocketUpgrade> previous) {
private static @Nullable UpgradeData<IPocketUpgrade> findUpgrade(NonNullList<ItemStack> inv, int start, @Nullable UpgradeData<IPocketUpgrade> previous) {
for (var i = 0; i < inv.size(); i++) {
var invStack = inv.get((i + start) % inv.size());
if (!invStack.isEmpty()) {
@@ -121,7 +118,7 @@ public class PocketAPI implements ILuaAPI {
invStack.shrink(1);
inv.set((i + start) % inv.size(), invStack.isEmpty() ? ItemStack.EMPTY : invStack);
return invStack.copyWithCount(1);
return newUpgrade;
}
}
}

View File

@@ -4,7 +4,12 @@
package dan200.computercraft.gametest.core;
import dan200.computercraft.api.client.ComputerCraftAPIClient;
import dan200.computercraft.api.client.turtle.TurtleUpgradeModeller;
import dan200.computercraft.api.turtle.TurtleUpgradeSerialiser;
import dan200.computercraft.export.Exporter;
import dan200.computercraft.testmod.EnchantableTurtleTool;
import dan200.computercraft.testmod.ModEntrypoint;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.RegisterClientCommandsEvent;
import net.minecraftforge.client.event.ScreenEvent;
@@ -16,10 +21,25 @@ import net.minecraftforge.event.server.ServerStartedEvent;
import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.RegistryObject;
import java.util.function.Supplier;
@Mod("cctest")
public class TestMod {
public static DeferredRegister<TurtleUpgradeSerialiser<?>> turtleRegistry = DeferredRegister.create(
TurtleUpgradeSerialiser.registryId(),
"cctest"
);
public static Supplier<TurtleUpgradeSerialiser<EnchantableTurtleTool>> ENCHANTED_TOOL = turtleRegistry.register(
ModEntrypoint.ENCHANTABLE_TOOL,
ModEntrypoint.buildEnchantableTurtleTool()
);
public TestMod() {
TestHooks.init();
@@ -30,6 +50,7 @@ public class TestMod {
var modBus = FMLJavaModLoadingContext.get().getModEventBus();
modBus.addListener((RegisterGameTestsEvent event) -> TestHooks.loadTests(event::register));
turtleRegistry.register(modBus);
}
private static void onInitializeClient() {
@@ -42,5 +63,12 @@ public class TestMod {
if (ClientTestHooks.onOpenScreen(e.getScreen())) e.setCanceled(true);
});
bus.addListener((RegisterClientCommandsEvent e) -> Exporter.register(e.getDispatcher()));
var modBus = FMLJavaModLoadingContext.get().getModEventBus();
modBus.addListener((FMLClientSetupEvent e) -> {
for (int i = 0; i < 100; i++)
System.out.println("JGHASVDFHGVSDFSDFSDF");
ComputerCraftAPIClient.registerTurtleUpgradeModeller(ENCHANTED_TOOL.get(), TurtleUpgradeModeller.flatItem());
});
}
}