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:
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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())));
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user