Clean repo for open source release

Remove build artifacts, dev tool configs, unused dependencies,
and third-party source dumps. Add proper README, update .gitignore,
clean up Makefile.
This commit is contained in:
NotEvil
2026-04-12 00:51:22 +02:00
parent 2e7a1d403b
commit f6466360b6
1947 changed files with 238025 additions and 1 deletions

View File

@@ -0,0 +1,121 @@
package com.tiedup.remake.tasks;
import com.tiedup.remake.state.IBondageState;
import java.util.UUID;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.level.Level;
/**
* Phase 6: Timed task that involves interacting with a target entity.
* Phase 14.2.6: Refactored to support any IBondageState entity (Players + NPCs)
*
* Based on original TimedInteractTask from 1.12.2
*
* Extends TimedTask with target tracking:
* - Tracks the target entity's IBondageState state
* - Can check if the same target is being interacted with (via UUID)
* - Abstract method to set up target state
*/
public abstract class TimedInteractTask extends TimedTask {
protected final IBondageState targetState; // The target's kidnapped state
protected final LivingEntity targetEntity; // The target entity
protected final UUID targetUUID; // Target's UUID for comparison
/**
* Create a new timed interaction task.
*
* @param targetState The target's IBondageState state
* @param targetEntity The target entity
* @param seconds Total duration in seconds
* @param level The world
*/
public TimedInteractTask(
IBondageState targetState,
LivingEntity targetEntity,
int seconds,
Level level
) {
super(seconds, level);
this.targetState = targetState;
this.targetEntity = targetEntity;
this.targetUUID = targetEntity.getUUID();
}
/**
* Check if this task is targeting the same entity.
* Uses UUID comparison to ensure uniqueness.
*
* @param entity The entity to compare with
* @return true if same target
*/
public boolean isSameTarget(LivingEntity entity) {
if (entity == null) {
return false;
}
return targetUUID.equals(entity.getUUID());
}
/**
* Get the target's IBondageState state.
*
* @return The target's kidnapped state
*/
public IBondageState getTargetState() {
return targetState;
}
/**
* Get the target entity.
*
* @return The target entity
*/
public LivingEntity getTargetEntity() {
return targetEntity;
}
/**
* Get the target's UUID.
*
* @return The target's UUID
*/
public UUID getTargetUUID() {
return targetUUID;
}
/**
* Check if the target entity is still valid (alive and exists).
*
* @return true if target is valid
*/
public boolean isTargetValid() {
return targetEntity != null && targetEntity.isAlive();
}
/**
* Set up the target's state for this task.
* This should be called when the task starts to initialize
* any necessary state on the target.
*
* Implementation is task-specific (tying vs untying).
*/
public abstract void setUpTargetState();
/**
* Called when the task completes successfully.
* Default implementation does nothing - subclasses should override.
*/
@Override
protected void onComplete() {
// Default: no-op, subclasses implement specific completion logic
}
/**
* Send progress packets to relevant players.
* Default implementation does nothing - subclasses should override.
*/
@Override
public void sendProgressPackets() {
// Default: no-op, subclasses implement packet sending
}
}